2009-06-19 43 views
0

有沒有人使用過PennySMS的網絡服務? (https://www.pennysms.com/docs)我在做一個成功的HttpPost請求時遇到了一些困難。如何在c#.net中使用PennySMS?

更新: 我是一個n00b Web服務。我甚至不知道我是否可以完成這種類型的請求服務器端。我用示例信息替換了params中的實際信息。

protected void bText_Click(object sender, EventArgs e) 
{ 
    string XML = "<?xml version=\"1.0\"?>" 
        +"<methodCall>" 
        +"<methodName>send</methodName>" 
        +" <params>" 
        +"  <param>" 
        + "   <value><string>MY KEY</string></value>" 
        +"  </param>" 
        +"  <param>" 
        + "   <value><string>[email protected]</string></value>" 
        +"  </param>" 
        +"  <param>" 
        + "   <value><string>555555555</string></value>" 
        +"  </param>" 
        +"  <param>" 
        +"   <value><string>Test Message</string></value>" 
        +"  </param>" 
        +" </params>" 
        +"</methodCall>"; 
    SendText("http://api.pennysms.com/xmlrpc", "XML"); 
} 
public void SendText(string _URL, string _parameters) 
{ 
    WebRequest request = WebRequest.Create(_URL); 
    request.Method = "POST"; 
    string postData = _parameters; 
    byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
    request.ContentType = "text/xml"; 
    request.ContentLength = byteArray.Length; 
    Stream dataStream = request.GetRequestStream(); 
    dataStream.Write(byteArray, 0, byteArray.Length); 
    dataStream.Close(); 
} 
+0

什麼是失敗的代碼? – Nate 2009-06-19 16:18:40

回答

0

以下代碼有效。我沒有試圖優化任何東西。除非服務器限制傳出連接,否則可以使用此服務器端。

protected static string DoRequest() 
    { 
     string XML = "<?xml version=\"1.0\"?>" 
      +"<methodCall>" 
      +"<methodName>send</methodName>" 
      +" <params>" 
      +"  <param>" 
      + "   <value><string>MY KEY</string></value>" 
      +"  </param>" 
      +"  <param>" 
      + "   <value><string>[email protected]</string></value>" 
      +"  </param>" 
      +"  <param>" 
      + "   <value><string>555555555</string></value>" 
      +"  </param>" 
      +"  <param>" 
      +"   <value><string>Test Message</string></value>" 
      +"  </param>" 
      +" </params>" 
      +"</methodCall>"; 
     return SendText("http://api.pennysms.com/xmlrpc", XML); 
    } 
    public static string SendText(string _URL, string _parameters) 
    { 
     WebRequest request = WebRequest.Create(_URL); 
     request.Method = "POST"; 
     string postData = _parameters; 
     byte[] byteArray = Encoding.UTF8.GetBytes(postData); 
     request.ContentType = "text/xml"; 
     request.ContentLength = byteArray.Length; 
     Stream dataStream = request.GetRequestStream(); 
     dataStream.Write(byteArray, 0, byteArray.Length); 
     dataStream.Close(); 

     long responseLength = request.GetResponse().ContentLength; 
     Stream responseStream = request.GetResponse().GetResponseStream(); 
     MemoryStream memStream = new MemoryStream((int)responseLength); 
     byteArray = new byte[4096]; 
     int bytesRead = 0; 
     bytesRead = responseStream.Read(byteArray, 0, 4096);     
     while(bytesRead > 0) 
     { 
      memStream.Write(byteArray, 0, bytesRead); 
      bytesRead = responseStream.Read(byteArray, 0, 4096);     
     }   
     return Encoding.UTF8.GetString(memStream.ToArray()); 
    } 
+0

這是行得通的。我將探索優化。謝謝! – moyibi 2009-06-19 17:53:54

0

如果您使用XML-RPC API,您是否檢查過您的內容類型?它應該是「text/xml」。