Как использовать PennySMS в c # .net? - PullRequest
0 голосов
/ 19 июня 2009

Кто-нибудь пользовался веб-сервисами PennySMS? (https://www.pennysms.com/docs) У меня возникли трудности с выполнением успешного запроса HttpPost.

Обновление: Я n00b для веб-служб. Я даже не знаю, смогу ли я выполнить этот тип запроса на стороне сервера. Я заменил фактическую информацию в параметрах на пример информации.

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>service@example.com</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();
}

Ответы [ 2 ]

0 голосов
/ 19 июня 2009

Следующий код работает. Я не пытался что-либо оптимизировать. Если сервер не ограничивает исходящие соединения, вы можете использовать эту сторону сервера.

    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>service@example.com</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 голосов
/ 19 июня 2009

Если вы используете API-интерфейс XML-RPC, проверили ли вы свой тип контента? Это должно быть "text / xml".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...