0

Web サービス (SMS) にデータを渡す必要がある Web ページがあり、WebRequestこの作業を行うために使用しようとしましたが、このクラスを使用すると次のエラーが表示されます。

Cannot close stream until all bytes are written

この行の後の行で:

stOut.WriteLine(strNewValue,number,text);

何が問題ですか?使ってみたFlush()けどダメだった

public class SendSms
{
    public SendSms(string number, string text)
    {
         string strNewValue;
         string strResponse;

         HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://www.buymessage.com/ostazSms/send.php");          

         req.Method = "POST";
         req.ContentType = "application/x-www-form-urlencoded";
         strNewValue = "usr=****&pwd=*****&to={0}&msg={1}"; 
         req.ContentLength = strNewValue.Length;

         using(StreamWriter stOut = new StreamWriter (req.GetRequestStream(), System.Text.Encoding.Unicode))
         {
             stOut.WriteLine(strNewValue,number,text);
         }

        StreamReader stIn = new StreamReader(req.GetResponse().GetResponseStream());
        strResponse = stIn.ReadToEnd();
        stIn.Close();  
    }
}
4

1 に答える 1

1

あなたの問題は、WriteLineおそらくすべてのデータを送信しない を呼び出すことです。

以下は、投稿データをエンコードしてすべて送信するスニペットです。

string strNewValue = string.Format("usr=****&pwd=*****&to={0}&msg={1}", "A", "B");
byte[] byteArray = Encoding.UTF8.GetBytes (strNewValue);
req.ContentLength = byteArray.Length;

using (Stream dataStream = req.GetRequestStream ()) {
    dataStream.Write (byteArray, 0, byteArray.Length);
}
于 2012-11-02T23:34:14.177 に答える