解码输入流

时间:2011-10-31 17:41:58

标签: c# asp.net

所以我有一个通过POST方法接受XML的页面。这是一小段代码:

if (Request.ContentType != "text/xml")
        throw new HttpException(500, "Unexpected Content Type");

StreamReader stream = new StreamReader(Request.InputStream);
string x = stream.ReadToEnd();  // added to view content of input stream

XDocument xmlInput = XDocument.Load(stream);

我收到错误,所以我将流转换为字符串,只是为了查看是否所有内容都正确发送。当我查看内容时,它看起来像这样:

  

%3C%3fxml +版本%3D%271.0%27 +编码%3D%27UTF-8%27%3F%3E%0D 0A%

所以我想我需要解码流。唯一的问题是我不知道如何在流上使用HtmlDecode,并仍然将其保留为StreamReader对象。

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:26)

显然,客户端正在将内容作为URL编码的XML发送。所以你需要解码这样的内容:

StreamReader stream = new StreamReader(Request.InputStream);
string x = stream.ReadToEnd();
string xml = HttpUtility.UrlDecode(x);

XDocument xmlInput = XDocument.LoadXml(xml);

无论如何,问题可能在客户端......为什么用这种方式编码XML?