解码输入流



所以我有一个通过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);

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

% 3 c % 3 fxml +版本% 3 d % 271.0% 27 + 27 utf - 8编码% 3 d % % 27% 3 f % 3 e % d % 0 a

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

有什么办法可以做到吗?

显然客户端以url编码的XML发送内容。所以你需要像这样解码内容:

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

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

最新更新