小菜来袭 2019-05-25 14:34 采纳率: 40%
浏览 608
已采纳

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条回答 默认 最新

  • threenewbee 2019-05-25 15:11
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 9月15日

悬赏问题

  • ¥15 matlab提取运动物体的坐标
  • ¥15 人大金仓下载,有人知道怎么解决吗
  • ¥15 一个小问题,本人刚入门,哪位可以help
  • ¥15 python安卓开发
  • ¥15 使用R语言GD包一直不出结果
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 stm32标准库的PID角度环
  • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!
  • ¥100 Excel 点击发送自动跳转outlook邮件