【问题标题】:WebClient Http Post format parameters from illegal charactersWebClient Http Post 格式参数来自非法字符
【发布时间】:2013-12-19 13:24:59
【问题描述】:

我正在使用 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);

这很好用,但是像 & 这样的某些字符显然会破坏它。

如何格式化我的参数以不删除但仍使非法字符通过?

【问题讨论】:

    标签: c# .net http-post webclient


    【解决方案1】:

    你需要UrlEncode你的vars使用HttpUtility.UrlEncode

    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 他们 MSDN

    【讨论】:

    • 解码没有问题,至少对于 & 字符。或者您是否有任何可能需要解码的字符?
    • 假设这取决于您阅读 & 的方式和位置。在某些情况下,框架会为您进行解码。
    【解决方案2】:

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

    encodeURIComponent('&') “%90k”

    例如,URL 如下所示:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-04-25
      • 2015-09-27
      • 2012-04-14
      • 2020-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多