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

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 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动
  • ¥20 对于工程问题的非线性数学模型进行线性化