HttpWebRequest将参数传递给WebService [英] HttpWebRequest pass parameters to WebService

查看:319
本文介绍了HttpWebRequest将参数传递给WebService的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个需要将数据传递到Web服务(SMS)的网页,并且尝试使用WebRequest进行此工作,但是当我使用此类时,会出现以下错误:

在写入所有字节之前无法关闭流
在此行之后的行中:

stOut.WriteLine(strNewValue,number,text);
问题是什么?我尝试使用Flush(),但也无法正常工作

I have a webpage that need to pass data to web Service (SMS) and I tried to use WebRequest to do this work but when I use this class the following error appears:

Cannot close stream until all bytes are written
in the line after this line :

stOut.WriteLine(strNewValue,number,text);
What is the problem? I tried to use Flush() but didn''t work either

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();  
    }
}

推荐答案

尝试以下代码:
Try the code below:
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}"; 
         
         byte[] byteArray = Encoding.UTF8.GetBytes(string.Format(strNewValue,number, text));
         req.ContentLength = byteArray.Length;
         Stream dataStream = req.GetRequestStream();
         dataStream.Write(byteArray, 0, byteArray.Length);
         dataStream.Close();
         
         try
         {
                HttpWebResponse response = (HttpWebResponse)req.GetResponse();
                Stream dataStream = response.GetResponseStream();
                StreamReader SR = new StreamReader(dataStream, Encoding.Unicode);
                strResponse = SR.ReadToEnd();
                response.Close();
                dataStream.Close();
                SR.Close();
                req.Abort();
         }
         catch {req.Abort();} 
    }
}


这篇关于HttpWebRequest将参数传递给WebService的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆