HttpWebRequest发送post请求时有多个参数如何处理? http://msdn.microsoft.com/zh-cn/library/system.net.webclient.uploadstring(v=vs.80).aspxWebClient.UploadString 可以满足你的要求UploadStringAsync为异步请求 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //这是我的代码: byte[] payload; StringBuilder sb = new StringBuilder(); sb.Append("&userCode="+this.textBox1.Text); sb.Append("&userName="+this.textBox2.Text); //将URL编码后的字符串转化为字节 payload = System.Text.Encoding.UTF8.GetBytes(sb.ToString()); //设置请求的 ContentLength request.ContentLength = payload.Length;//设置请求的 ContentLength 这中间的代码换成我的。这样就没问题了。 //这是我的代码: byte[] payload; StringBuilder sb = new StringBuilder(); sb.Append("&userCode="+this.textBox1.Text); sb.Append("&userName="+this.textBox2.Text); //将URL编码后的字符串转化为字节 payload = System.Text.Encoding.UTF8.GetBytes(sb.ToString());//设置请求的 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("<","<");strValue = strValue.Replace(">",">");MessageBox.Show(strValue); Reader.Close();标红色 的 是的,格式是string data = "param1=x1¶m2=x2¶m3=x3¶m4=x5¶m6=x7" 第一个参数param1前面是不是也要加&,我就是像你这样写的,结果报错了。 本帖最后由 net_lover 于 2012-08-12 11:13:24 编辑 下面是我做的一个测试,你可以完全拷贝下来进行测试asmx代码<%@ WebService Language="C#" Class="Service1" %>using System;using System.Web;using System.Web.Services;using System.Web.Services.Protocols;[WebService(Namespace = "http://tempuri.org/")][WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService]public class Service1 : System.Web.Services.WebService { [WebMethod] public string doSearch(String p1,String p2,String p3) { return "Hello World" + p1 + p2 + p3; } }winform代码 private void button1_Click(object sender, EventArgs e) { string strURL = "http://localhost:2852/WebSite1/Service1.asmx/doSearch"; System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strURL); //Post请求方式 request.Method = "POST"; // 内容类型 request.ContentType = "application/x-www-form-urlencoded"; //这是原始代码: string paraUrlCoded = "p1=x&p2=y&p3=测试的中文"; 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(); XmlDocument d = new XmlDocument(); d.Load(s); MessageBox.Show(d.DocumentElement.InnerText); } 测试编码问题private void button1_Click(object sender, EventArgs e){ //测试编码问题 string p1 = "测试的代码<啊啊啊>"; string p2 = "\"'===&&"; string p3 = "??"; string strURL = "http://localhost:2852/WebSite1/Service1.asmx/doSearch"; System.Net.HttpWebRequest request; request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strURL); //Post请求方式 request.Method = "POST"; // 内容类型 request.ContentType = "application/x-www-form-urlencoded"; //这是原始代码: string paraUrlCoded = "p1=" + Uri.EscapeDataString(p1) + "&p2=" + Uri.EscapeDataString(p2) + "&p3=" + Uri.EscapeDataString(p3); 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(); XmlDocument d = new XmlDocument(); d.Load(s); MessageBox.Show(d.DocumentElement.InnerText);} C# Web Service 如何调用 求一正则表达式(字符串中是否存在大括号,中括号,单引号,双引号({}[]'")等六个特殊字符,且字字符串长度不超过20个字符,要求调用Regex.IsMatch返回false) C#连接Oracle数据库,连接字符串怎么写? 分享一个实际应用中的算法需求 点击按钮1后启动了一个线程(假设里面是个死循环).我怎么在按钮2中销毁这个线程呢?没办法题目太短没人看 系统流程重组 数据库操作问题:我把一个表的数据(批量,即多条记录)取出来,然后存到另外一个表里面 ,请问如何处理?在线等待!!!! Study C# First lock 的一个问题,求解答! 在C#中如何把SQL SERVER中的数据与网格控件进行绑定... c#怎样unload已经装载的dll DevExpress GridControl 获取合计值
//这是我的代码:
byte[] payload;
StringBuilder sb = new StringBuilder();
sb.Append("&userCode="+this.textBox1.Text);
sb.Append("&userName="+this.textBox2.Text);
//将URL编码后的字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
//设置请求的 ContentLength
request.ContentLength = payload.Length;
//设置请求的 ContentLength 这中间的代码换成我的。
这样就没问题了。
byte[] payload;
StringBuilder sb = new StringBuilder();
sb.Append("&userCode="+this.textBox1.Text);
sb.Append("&userName="+this.textBox2.Text);
//将URL编码后的字符串转化为字节
payload = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
//设置请求的 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("<","<");
strValue = strValue.Replace(">",">");
MessageBox.Show(strValue);
Reader.Close();标红色 的
string data = "param1=x1¶m2=x2¶m3=x3¶m4=x5¶m6=x7"
<%@ WebService Language="C#" Class="Service1" %>using System;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
//若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。
// [System.Web.Script.Services.ScriptService]
public class Service1 : System.Web.Services.WebService { [WebMethod]
public string doSearch(String p1,String p2,String p3)
{
return "Hello World" + p1 + p2 + p3;
}
}winform代码 private void button1_Click(object sender, EventArgs e)
{
string strURL = "http://localhost:2852/WebSite1/Service1.asmx/doSearch";
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strURL);
//Post请求方式
request.Method = "POST";
// 内容类型
request.ContentType = "application/x-www-form-urlencoded";
//这是原始代码:
string paraUrlCoded = "p1=x&p2=y&p3=测试的中文";
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();
XmlDocument d = new XmlDocument();
d.Load(s);
MessageBox.Show(d.DocumentElement.InnerText); }
{
//测试编码问题
string p1 = "测试的代码<啊啊啊>";
string p2 = "\"'===&&";
string p3 = "??";
string strURL = "http://localhost:2852/WebSite1/Service1.asmx/doSearch";
System.Net.HttpWebRequest request;
request = (System.Net.HttpWebRequest)HttpWebRequest.Create(strURL);
//Post请求方式
request.Method = "POST";
// 内容类型
request.ContentType = "application/x-www-form-urlencoded";
//这是原始代码:
string paraUrlCoded = "p1=" + Uri.EscapeDataString(p1) + "&p2=" + Uri.EscapeDataString(p2) + "&p3=" + Uri.EscapeDataString(p3);
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();
XmlDocument d = new XmlDocument();
d.Load(s);
MessageBox.Show(d.DocumentElement.InnerText);}