У меня проблемы с чтением отклика "chunked" при использовании StreamReader для чтения потока, возвращаемого GetResponseStream () объекта HttpWebResponse:
// response is an HttpWebResponse
StreamReader reader = new StreamReader(response.GetResponseStream());
string output = reader.ReadToEnd(); // throws exception...
Когда вызывается метод reader.ReadToEnd()
, я получаю следующее исключение System.IO.IOException: Невозможно прочитать данные из транспортного соединения: соединение было закрыто.
Приведенный выше код прекрасно работает, когда сервер возвращает «не разделенный на части» ответ.
Единственный способ заставить его работать - это использовать HTTP / 1.0 для первоначального запроса (вместо HTTP / 1.1, по умолчанию), но это похоже на неудачный обходной путь.
Есть идеи?
@ Чак
Ваше решение работает довольно хорошо. Это все еще бросает то же самое IOExeception в последнем Read (). Но после проверки содержимого StringBuilder похоже, что все данные были получены. Так что, возможно, мне просто нужно обернуть Read () в try-catch и проглотить «ошибку».