我试图写一个windows客户端应用程序,调用一个网站的数据。为了使安装最小化,我尝试只使用。net框架客户端配置文件中的dll。麻烦的是,我需要UrlEncode一些参数,有没有一个简单的方法来做到这一点,而不导入System.Web.dll,这不是客户端Pofile的一部分?


当前回答

System.Net.WebUtility.HtmlDecode

其他回答

System.Uri.EscapeUriString()对于某些字符可能会有问题,对我来说,它是字符串中的数字/磅“#”符号。

如果这对你来说是个问题,试试:

System.Uri.EscapeDataString() //Works excellent with individual values

下面是一个SO问题的答案,解释了两者的区别:

EscapeUriString和EscapeDataString的区别是什么?

并建议在任何方面使用Uri.EscapeDataString()。

System.Net.WebUtility.HtmlDecode

UrlEncode不使用系统。网络:

String s = System.Net.WebUtility.UrlEncode(str);
//fix some different between WebUtility.UrlEncode and HttpUtility.UrlEncode
s = Regex.Replace(s, "(%[0-9A-F]{2})", c => c.Value.ToLowerInvariant());

更多的细节: https://www.samnoble.co.uk/2014/05/21/beware-webutility-urlencode-vs-httputility-urlencode/

有一个客户端配置文件可用的版本,System.Net.WebUtility类,在客户端配置文件System.dll中。这是MSDN链接:

WebUtility

下面是一个发送POST请求的例子,使用application/x-www-form-urlencoded内容类型正确编码参数:

using (var client = new WebClient())
{
    var values = new NameValueCollection
    {
        { "param1", "value1" },
        { "param2", "value2" },
    };
    var result = client.UploadValues("http://foo.com", values);
}