c# winform向一般处理程序(ashx) Post数据的时候 对特殊字符编码的问题

winfrom POST代码
url=http://192.168.1.101:8089/Handle/B.ashx
pdata="a=ert45/sd2=&babc=/&c=123=/"

  public static string PostHttpHandle(string url, string pdata)
        {
            Dictionary<string, string> dd = new Dictionary<string, string>();
            dd.Add(url, pdata);
            string udata = string.Empty;
            foreach (KeyValuePair<string, string> kvp in dd)
            {
                System.Net.HttpWebRequest request2;
                request2 = (System.Net.HttpWebRequest)WebRequest.Create(kvp.Key);
                request2.Method = "POST";
                request2.ContentType = "application/x-www-form-urlencoded;";
                byte[] payload;
                payload = System.Text.Encoding.UTF8.GetBytes(kvp.Value);
                request2.ContentLength = payload.Length;
                Stream writer = request2.GetRequestStream();
                writer.Write(payload, 0, payload.Length);
                writer.Close();
                System.Net.HttpWebResponse response;
                response = (System.Net.HttpWebResponse)request2.GetResponse();
                System.IO.Stream s;
                s = response.GetResponseStream();
                StreamReader reader = new StreamReader(s);
                udata = reader.ReadToEnd();  
                reader.Close();
            }
            return HttpUtility.UrlEncode(udata, System.Text.Encoding.UTF8);
        }

ashx 接收的代码

//输出会把=号变成%3D /变成%3f

      public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string token = string.Format(HttpUtility.UrlDecode( context.Request.Form["a"]),System.Text.Encoding.UTF8);
            string jqm = string.Format(HttpUtility.UrlDecode( context.Request.Form["b"]),System.Text.Encoding.UTF8);
            string my = string.Format(HttpUtility.UrlDecode( context.Request.Form["c"]),System.Text.Encoding.UTF8);
            context.Response.Write(my)
        }

我想我发送过去的= 和 / 符号 服务器端接收就是=号和/符号 不要编码 另外服务端返回的 = 和 / 符号 我能也能接收到 向服务器POST加密的数据就一定会用到=和/ 这些特殊符号

1个回答

pdata="a=ert45/sd2=&babc=/&c=123=/"
这里对参数的值做一个 UrlEncode

u011954277
小菜来袭 我这边是用string str=string.format("a=ert45/sd2=&babc=/&c=123=/") 然后HttpUtility.UrlEncode(string.format("a=ert45/sd2=&babc=/&c=123=/") ,System.Text.Encoding.UTF8)) 会报错的 而且传值明显变了
9 个月之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问