ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

C#程序发送POST请求数据中+号丢失解决方案

2019-09-19 20:53:10  阅读:258  来源: 互联网

标签:UrlEncode parameters 转码 C# 解决方案 buffer key POST


C#程序把RSA加密后的密码发送到后台总是校验失败,用wireshark抓包检查发现POST发出的密码中的+号都变成了空格。为了正确的发送数据,要用URL转码协议进行转码。

有两个方法进行URL转码

第一种是使用HttpUtility.UrlEncode(),命名空间为System.Web

不过我使用的C#版本已经不支持该写法

第二种是使用WebUtility.UrlEncode(),命名空间为System.Net

我所使用的C#版本正常使用,建议使用该函数

//如果需要POST数据   
if (!(parameters == null || parameters.Count == 0))
{
    StringBuilder buffer = new StringBuilder();
    int i = 0;
    foreach (string key in parameters.Keys)
    {
        if (i > 0)
        {
       //对有特殊字符的post内容进行转码
            buffer.AppendFormat("&{0}={1}", key, WebUtility.UrlEncode(parameters[key]));
        }
        else
        {
       //对有特殊字符的post内容进行转码
            buffer.AppendFormat("{0}={1}", key, WebUtility.UrlEncode(parameters[key]));
        }
        i++;
    }
    byte[] data = charset.GetBytes(buffer.ToString());
    using (Stream stream = request.GetRequestStream())
    {
        stream.Write(data, 0, data.Length);
    }
}

 

标签:UrlEncode,parameters,转码,C#,解决方案,buffer,key,POST
来源: https://www.cnblogs.com/zhaoshizi/p/11552495.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有