http://msdn.microsoft.com/zh-cn/library/system.net.webclient.uploadstring(v=vs.80).aspxWebClient.UploadString 可以满足你的要求UploadStringAsync为异步请求

解决方案 »

  1.   


    //这是我的代码:
    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  这中间的代码换成我的。
    这样就没问题了。
      

  2.   

    //这是我的代码:

      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("&lt;","<");
    strValue = strValue.Replace("&gt;",">");
    MessageBox.Show(strValue);  
    Reader.Close();标红色 的
      

  3.   

    是的,格式是
    string data = "param1=x1&param2=x2&param3=x3&param4=x5&param6=x7"
      

  4.   

    第一个参数param1前面是不是也要加&,我就是像你这样写的,结果报错了。
      

  5.   

    本帖最后由 net_lover 于 2012-08-12 11:13:24 编辑
      

  6.   

    下面是我做的一个测试,你可以完全拷贝下来进行测试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);    }
      

  7.   

    测试编码问题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);}