【问题标题】:C# HttpWebReqest - escape POST content?C# HttpWebRequest - 转义 POST 内容?
【发布时间】:2010-10-20 16:46:58
【问题描述】:

过去,当我将 C# 应用程序中的内容上传到网站时,我使用过这样的 POST 请求:

    HttpWebRequest wr = (HttpWebRequest)WebRequest.Create("http://" + this.server + "/log.php");
    wr.Method = "POST";
    wr.ContentType = "application/x-www-form-urlencoded";
    string paramString = "v=" + this.version + "&m=" + this.message;
    wr.ContentLength = paramString.Length;
    StreamWriter stOut = new StreamWriter(wr.GetRequestStream(), System.Text.Encoding.ASCII);
    stOut.Write(paramString);
    stOut.Close();

我的问题是,现在我处于this.message 很可能包含换行符、制表符和特殊字符(包括“&”和“=”)的情况。我是否需要转义此内容。如果有,怎么做?

【问题讨论】:

    标签: c# httpwebrequest escaping


    【解决方案1】:

    您可以酌情使用 HttpUtility.HtmlEncode/HtmlDecode 或 UrlEncode/UrlDecode。

    【讨论】:

    • 是的。 UrlEncode 是我需要的:msdn.microsoft.com/en-us/library/4fkewx0t.aspx 谢谢。
    • (如果您没有通过 Intellisense 找到它,请确保您引用的是 System.Web 程序集。)
    • 是的...刚看到。对不起。我在文档页面上看到了 .Net 3.5 并感到害怕。有点过头了。
    【解决方案2】:

    仅供参考,我的问题的解决方法在:

    System.Web.HttpUtility.UrlEncode

    .Net 框架的所有版本都支持它=p

    具体来说,我正在使用采用string as an argument 的重载。对所有参数值运行此操作将使它们对 POST 安全。

    【讨论】:

      【解决方案3】:

      System.Web 已过时 - 请改用 System.Net.WebUtility...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-12-12
        • 1970-01-01
        • 2014-07-31
        • 2017-08-23
        • 1970-01-01
        • 2011-07-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多