尝试上传到 Web 服务时编码不起作用
Encoding not working when trying to Upload to a web service
您好,我正在尝试通过 WebClient 将数据发送到 Web 服务,但它似乎错误地通过了密码字段。下面是我的 WebClient 的代码:
using (var client = new WebClient())
{
client.Encoding = System.Text.Encoding.UTF8;
var response = client.UploadString(string.Format(SendToServiceURL + "api/SendRequest?Id={0}&product={1}&password={2}", Id, Product, Password),
"POST");
return response;
}
发送前的密码是-GVg4Vs2<)/BFkU(u%Be%C:{<^9
但是服务收到的密码是 - GVg4Vs2<)/BFkU(u�%C:{<^9
我也尝试使用 HTTP 实用程序包 HtmlEncode
功能,如下所示,但只返回 GVg4Vs2
。
(请注意,我只是在原始代码中用 Password
替换了下面的 encodedPassword
变量)
var encodedPassword = HttpUtility.HtmlEncode(password);
有没有人知道这是为什么或可能的解决方法?
您需要使用 HttpUtility.UrlEncode
而不是 HttpUtility.HtmlEncode
。
HtmlEncode
将 <
变成 <
这意味着 &
之后的所有内容都是一个新的查询字符串参数。
UrlEncode
确保所有 "weird" 字符都可以作为查询字符串参数正确传递:GVg4Vs2%3c)%2fBFkU(u%25Be%25C%3a%7b%3c%5e9
但最好不要在查询字符串中放置密码,而应将其作为 post 数据的一部分,或者更好地为 Web 服务调用使用适当的身份验证机制。
您好,我正在尝试通过 WebClient 将数据发送到 Web 服务,但它似乎错误地通过了密码字段。下面是我的 WebClient 的代码:
using (var client = new WebClient())
{
client.Encoding = System.Text.Encoding.UTF8;
var response = client.UploadString(string.Format(SendToServiceURL + "api/SendRequest?Id={0}&product={1}&password={2}", Id, Product, Password),
"POST");
return response;
}
发送前的密码是-GVg4Vs2<)/BFkU(u%Be%C:{<^9
但是服务收到的密码是 - GVg4Vs2<)/BFkU(u�%C:{<^9
我也尝试使用 HTTP 实用程序包 HtmlEncode
功能,如下所示,但只返回 GVg4Vs2
。
(请注意,我只是在原始代码中用 Password
替换了下面的 encodedPassword
变量)
var encodedPassword = HttpUtility.HtmlEncode(password);
有没有人知道这是为什么或可能的解决方法?
您需要使用 HttpUtility.UrlEncode
而不是 HttpUtility.HtmlEncode
。
HtmlEncode
将 <
变成 <
这意味着 &
之后的所有内容都是一个新的查询字符串参数。
UrlEncode
确保所有 "weird" 字符都可以作为查询字符串参数正确传递:GVg4Vs2%3c)%2fBFkU(u%25Be%25C%3a%7b%3c%5e9
但最好不要在查询字符串中放置密码,而应将其作为 post 数据的一部分,或者更好地为 Web 服务调用使用适当的身份验证机制。