Определение контента из StreamReader? - PullRequest
0 голосов
/ 03 февраля 2012

Я вынужден работать с дрянным сторонним API, где нет согласованности с типом возврата. Поэтому я отправляю программный веб-запрос, перехватываю поток обратно, и базовый контент может быть сообщением об ошибке (что еще хуже, поскольку это может быть либо необработанный текст, либо XML, который они возвращают), либо он возвращает двоичный файл. У меня нет возможности узнать, какой формат ожидать при любом запросе, поэтому мне нужен способ проанализировать это во время выполнения.

Как мне решить эту проблему? Поток недоступен для поиска, поэтому я ничего не могу сделать, кроме как прочитать его. Я обычно стараюсь не использовать обработку исключений для управления потоком, но кажется, что это может быть лучшим способом справиться с этим. Всегда относитесь к нему так, как будто это должен быть ожидаемый двоичный тип файла, и, если что-то взорвется, перехватите исключение и попытайтесь извлечь то, что должно быть сообщением об ошибке

1 Ответ

0 голосов
/ 03 февраля 2012

Одна вещь, которая приходит в голову, это изучить первое число байтов в потоке. Если первый бит является правильно сформированным xml, то это, вероятно, xml. Проблема заключается в попытке определить разницу между необработанным текстом или двоичным.

...