Mam problemy z czytania „pakietowego” odpowiedzi przy użyciu StreamReader do odczytu strumienia zwracanego przez GetResponseStream() o HttpWebResponse:Reading „pakietowego” odpowiedź z HttpWebResponse
// response is an HttpWebResponse
StreamReader reader = new StreamReader(response.GetResponseStream());
string output = reader.ReadToEnd(); // throws exception...
Gdy jest metoda reader.ReadToEnd()
o nazwie Otrzymuję następujący System.IO.IOException: Nie można odczytać danych z połączenia transportowego: Połączenie zostało zamknięte.
Powyższy kod działa poprawnie, gdy serwer zwraca odpowiedź "nieobciąganą".
Jedynym sposobem, w jaki udało mi się go uruchomić, jest użycie HTTP/1.0 dla początkowego żądania (zamiast domyślnego HTTP/1.1), ale wydaje się to być kiepską pracą.
Wszelkie pomysły?
@Chuck
Twoje rozwiązanie działa całkiem dobrze. Nadal rzuca to samo IOExeception na ostatnim Read(). Ale po sprawdzeniu zawartości StringBuilder wygląda na to, że wszystkie dane zostały odebrane. Być może po prostu muszę owinąć Read() w try-catch i połknąć "błąd".
Aby przeczytać pakietowego odpowiedź, trzeba wykonać http://en.wikipedia.org/wiki/Chunked_transfer_encoding –
widzę ten problem z .NET 4.6 połączenie z interfejsem REST API PowerDNS 3.4.5. Rozwiązania nie pomagają. Jeśli połknę wyjątek, stracę część odpowiedzi. –