接收具有不同编码的帖子数据

时间:2011-04-29 18:16:54

标签: c# post encoding character-encoding httpwebrequest

我正在尝试与第三方系统集成,并且在文档中提到当他们通过HttpPost发送xml数据时,他们有时会使用“ text / xml charset = \”UTF-8 **“”对于“内容类型”,在其他情况下,他们使用“** application / x-www.form-urlencoded ”作为内容类型。

解析请求会有什么不同吗?现在我只使用以下代码拉取帖子数据:

 StreamReader reader = new StreamReader(Request.InputStream);

        String xmlData = reader.ReadToEnd();

4 个答案:

答案 0 :(得分:5)

当您打开流阅读器时,您应该传递HttpRequest对象上指定的编码。

StreamReader reader = new StreamReader(request.InputStream, request.ContentEncoding);
string xmlData = reader.ReadToEnd();

这应该允许您将请求的原始内容放入正确的.NET字符串中,无论使用何种编码。

答案 1 :(得分:1)

始终优先使用Encoding.UTF8。这将确保在大多数情况下,读数始终以正确的编码标准完成。

StreamReader sr = new StreamReader(Request.InputStream, Encoding.UTF8);

希望它有所帮助。

答案 2 :(得分:1)

您可以在构造中将编码传递给StreamReader,如下所示:

  StreamReader s = new StreamReader(new FileStream(FILE), Encoding.UTF8);

答案 3 :(得分:0)

application/x-www.form-urlencodedHTTP Form Data不是 XML。

如果您希望Request.InputStreamContent-Typeapplication/x-www.form-urlencoded是可解析的XML字符串,那么您的代码很可能会失败