我正在尝试与第三方系统集成,并且在文档中提到当他们通过HttpPost发送xml数据时,他们有时会使用“ text / xml charset = \”UTF-8 **“”对于“内容类型”,在其他情况下,他们使用“** application / x-www.form-urlencoded ”作为内容类型。
解析请求会有什么不同吗?现在我只使用以下代码拉取帖子数据:
StreamReader reader = new StreamReader(Request.InputStream);
String xmlData = reader.ReadToEnd();
答案 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-urlencoded
是HTTP Form Data,不是 XML。
如果您希望Request.InputStream
为Content-Type
时application/x-www.form-urlencoded
是可解析的XML字符串,那么您的代码很可能会失败