StreamSend API Blast, отправка электронной почты - PullRequest
0 голосов
/ 18 мая 2011

Мне нужно использовать StreamSend API для отправки электронной почты, здесь Ссылка на StreamSend API

Я делаю веб-запрос в виде публикации на следующий URL с соответствующими учетными данными

https://app.streamsend.com/audiences/2/blasts.xml

StringBuilder sb = new StringBuilder();
           sb.Append("https://app.streamsend.com/audiences/2/blasts.xml");
            Uri uri = new Uri(sb.ToString());
            HttpWebRequest request = WebRequest.Create(uri) as HttpWebRequest;
            request.ContentType = "application/xml";

            StringBuilder strMail= new StringBuilder();
            strMail.Append("<blast> ALL from api..... </blast>");

        byte[] data = Encoding.ASCII.GetBytes(strMail.ToString());
        Stream input = request.GetRequestStream();
        input.Write(data, 0, data.Length);
        input.Close();
        HttpWebResponse nsResponse = (HttpWebResponse)request.GetResponse();

у меня ошибка # 422 или 500. Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 18 мая 2011

Пара вещей. Во-первых, похоже, что вы пытаетесь выполнить запрос POST (вы отправляете данные в потоке запросов). Если вы действительно хотите запрос POST, вы должны установить request.Method = "POST";

Кроме того, если вы хотите получить ответ XML, вам нужно установить заголовок Accept. Согласно документации, которую вы перечислили, вам необходимо: request.Accept = "application/xml";

И вам также необходимо добавить свой логин в запрос. Я не уверен, как это сделано. Возможно, в свойстве request.Credentials вот так:

request.Credentials = new NetworkCredential("login_id", "your_key_here");

Наконец, нет смысла использовать StringBuilder, если все, что вы делаете - это присваиваете строки. Вы можете написать, например:

string urlString = "https://app.streamsend.com/audiences/2/blasts.xml" 
Uri uri = new Uri(urlString);

или

byte[] data = Encoding.ASCII.GetBytes("<blast> ALL from api..... </blast>");
...