尝试上载到Web服务时编码不起作用

时间:2016-02-12 11:45:24

标签: c# webserver

您好我正在尝试通过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&lt;)/BFkU(u�%C:{&lt;^9

我还尝试使用HTTP实用程序包HtmlEncode功能,如下所示,但只返回GVg4Vs2

(注意我刚刚在原始代码中替换Password下面的encodedPassword变量

var encodedPassword = HttpUtility.HtmlEncode(password);

有没有人知道为什么会这样或可能的解决方法?

1 个答案:

答案 0 :(得分:1)

您需要使用HttpUtility.UrlEncode代替HttpUtility.HtmlEncode

HtmlEncode<变为&lt;,这意味着&之后的所有内容都是新的查询字符串参数。

UrlEncode确保所有&#34;奇怪的&#34;字符可以作为查询字符串参数正确传递:GVg4Vs2%3c)%2fBFkU(u%25Be%25C%3a%7b%3c%5e9

但最好不要在查询字符串中设置密码,但要将其作为发布数据的一部分,或者更好地使用适当的身份验证机制进行Web服务调用。