Декодирование входного потока

Итак, у меня есть страница, которая принимает 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 таким образом?