加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 01:22:40 所属栏目:百科 来源:网络整理
导读:C#程序把RSA加密后的密码发送到后台总是校验失败,用wireshark抓包检查发现POST发出的密码中的+号都变成了空格。为了正确的发送数据,要用URL转码协议进行转码。 有两个方法进行URL转码 第一种是使用HttpUtility.UrlEncode(),命名空间为System.Web 不过我使

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}",WebUtility.UrlEncode(parameters[key]));
        }
        i++;
    }
    byte[] data = charset.GetBytes(buffer.ToString());
    using (Stream stream = request.GetRequestStream())
    {
        stream.Write(data,0,data.Length);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读