Декодирование входного потока
Итак, у меня есть страница, которая принимает XML через метод POST. Здесь немного кода:
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
По-видимому, клиент отправляет контент в виде XML-кода. Поэтому вам нужно декодировать контент следующим образом:
StreamReader stream = new StreamReader(Request.InputStream);
string x = stream.ReadToEnd();
string xml = HttpUtility.UrlDecode(x);
XDocument xmlInput = XDocument.LoadXml(xml);
В любом случае проблема, вероятно, на стороне клиента... почему она кодирует XML таким образом?