& # 39; + & # 39;从使用c#到webapi2的POST数据中忽略字符

本文关键字:数据 POST 字符 webapi2 | 更新日期: 2023-09-27 18:15:30

我有一个客户端连接到Asp.net Webapi2,使用身份&OAuth2 for Authentication.
在身份验证过程中,每当密码字段包含"+"字符时。服务器直接忽略这个字符!!(以及下面测试中提到的大多数其他符号字符)

string data = "grant_type=password&username=" + username + "&password=" + password;
byte[] bytes = System.Text.Encoding.UTF8.GetBytes(data);
data.PostToUrl();//This Is just pseudoCode

Server Debug:
已发送数据:password=test+1
接收数据:password=test 1
test2
已发送数据:"+_)(&^%$#@!~"
接收数据:" _)(
"

谢谢。

& # 39; + & # 39;从使用c#到webapi2的POST数据中忽略字符

有什么问题?对于HTTP URL,一个+相当于一个空格。事实上,%20也可以使用。

在查询中发送数据时总是使用UrlEncode;在

var q = string.Format("grant_type=password&username={0}&password={1}", 
    HttpUtility.UrlEncode(username),
    HttpUtility.UrlEncode(password));

HttpServerUtility。UrlEncode

这将有助于解决特殊字符的问题,如+和#

要使用它,你需要添加一个对System的引用。Web (Project Explorer> References> Add reference> System.Web)

一旦你完成了,你可以用它来编码任何你想要的项目