WebClient Http Post格式参数来自非法字符

时间:2013-12-19 13:24:59

标签: c# .net http-post webclient

我正在使用WebClient类发布表单,它看起来像这样。

string URI = "url here";
string myParameters = string.Format("Parameter1={0}&Parameter2={1}", var1, var2);

WebClient wc = new WebClient();
wc.Encoding = Encoding.UTF8;
wc.Headers["Content-type"] = "application/x-www-form-urlencoded";
string HtmlResult = wc.UploadString(URI, myParameters);

哪个效果很好,但像&这样的某些字符显然会破坏它。

如何将参数格式化为不删除但仍会使非法字符通过?

2 个答案:

答案 0 :(得分:2)

您需要使用HttpUtility.UrlEncode

UrlEncode vars string URI = "url here"; string myParameters = string.Format("Parameter1={0}&Parameter2={1}", HttpUtility.UrlEncode(var1), HttpUtility.UrlEncode(var2)); WebClient wc = new WebClient(); wc.Encoding = Encoding.UTF8; wc.Headers["Content-type"] = "application/x-www-form-urlencoded"; string HtmlResult = wc.UploadString(URI, myParameters);
&

这将编码所有非法字符,而不只是UrlDecode,BTW


在阅读这些内容时,在请求的另一方,您可能还需要{{1}}他们MSDN

答案 1 :(得分:-1)

他们需要进行百分比编码:

  

encodeURIComponent方法( '&安培;')   “%90K”

例如,网址如下所示:

www.facebook.com?service_name=M%90k