日期:2014-05-18  浏览次数:21069 次

HttpWebRequest发送post请求时有多个参数如何处理?
在网上找了一段winform中发送post请求的代码,但是我要post的参数有多个,我试了下用&,|连接都出错。报远程服务器返回错误:(400)错误的请求。
string strURL = "http://localhost/Play/CH1/Service1.asmx/doSearch";
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)WebRequest.Create(strURL);
//Post请求方式
request.Method="POST";
// 内容类型
request.ContentType="application/x-www-form-urlencoded";
// 参数经过URL编码

//这是原始代码:
string paraUrlCoded = System.Web.HttpUtility.UrlEncode("keyword");
paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(this.textBox1.Text);


//这是我的代码:
string paraUrlCoded = System.Web.HttpUtility.UrlEncode("userCode");
paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(this.textBox1.Text);
paraUrlCoded ="&"+ System.Web.HttpUtility.UrlEncode("userName");
paraUrlCoded += "=" + System.Web.HttpUtility.UrlEncode(this.textBox2.Text);
byte[] payload;
//将URL编码后的字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(paraUrlCoded);
//设置请求的 ContentLength 
request.ContentLength = payload.Length;
//获得请 求流
Stream writer = request.GetRequestStream();
//将请求参数写入流
writer.Write(payload,0,payload.Length);
// 关闭请求流
writer.Close();
System.Net.HttpWebResponse response;
// 获得响应流
response = (System.Net.HttpWebResponse)request.GetResponse();
System.IO.Stream s;
s = response.GetResponseStream();
XmlTextReader Reader = new XmlTextReader(s);
Reader.MoveToContent();
string strValue = Reader.ReadInnerXml();
strValue = strValue.Replace("&lt;","<");
strValue = strValue.Replace("&gt;",">");
MessageBox.Show(strValue); 
Reader.Close();


------解决方案--------------------
param1是不需要加的
结果报错,可能是提供的参数或者编码格式还是不正确

注意参数名称要完全一样