2011-05-18 70 views
0

我需要使用StreamSend API发送电子邮件,这里是 StreamSend API ReferenceStreamSend API爆炸,发送电子邮件

我提出Web请求作为后到以下网址与正确的凭据

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.我将不胜感激任何帮助。

+0

@Jim我已经做了证书和输入数据。问题是错误#500,422 – user759659 2011-05-18 19:50:13

+0

您没有在代码示例中显示凭据,也没有显示您正在执行POST请求。无论如何,根据您链接的文档,422意味着您提供了无效数据。它说,500是StreamSend应用程序的问题。你是否检查422的返回数据以查看错误是什么? – 2011-05-18 20:21:58

回答

0

一些事情。首先,它看起来像是在尝试执行POST请求(您正在请求流中发送数据)。如果你真的想要一个POST请求,你必须设置request.Method = "POST";

另外,如果你想要一个XML响应,你需要设置Accept头。根据您列出的文档,您需要:request.Accept = "application/xml";

而且您还需要将登录ID添加到请求中。我不确定这是如何完成的。也许在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>");