2009-06-19 6 views
0

PennySMSのウェブサービスを使用した人はいますか? (https://www.pennysms.com/docs)HttpPostリクエストを成功させるのが難しいです。C#.netでPennySMSを使用するには?

更新: 私はWebサービスのn00bです。このタイプのリクエストをサーバー側で完了できるかどうかはわかりません。私はparamsの実際の情報をexampleの情報に置き換えました。

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

答えて

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

0

XML-RPC APIを使用している場合は、コンテンツタイプを確認しましたか? "text/xml"にする必要があります。

関連する問題