У меня возникли проблемы с чтением "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: Невозможно прочитать данные из транспортного соединения: соединение было закрыто.
Приведенный выше код работает очень хорошо, когда сервер возвращает ответ "не-chunked".
Единственный способ, с помощью которого я смог заставить его работать, - использовать HTTP/1.0 для первоначального запроса (вместо HTTP/1.1, по умолчанию), но это похоже на хромую работу.
Любые идеи?
@Chuck
Ваше решение работает очень хорошо. Он по-прежнему бросает одно и то же IOExeception в последнем Read(). Но после проверки содержимого StringBuilder это похоже на то, что все данные были получены. Поэтому, возможно, мне просто нужно обернуть Read() в try-catch и усвоить "ошибку".