2011-09-25 16 views

Odpowiedz

57

Powinieneś utworzyć StreamReader wokół strumienia, a następnie zadzwonić pod numer ReadToEnd.

Zamiast tego należy rozważyć wywołanie WebClient.DownloadString.

+1

Thanks SLaks, sprawdzając teraz DownloadString. Właściwie jestem gettng różne ciągi kodu źródłowego w porównaniu z moim starym aplikacji gdzie wykorzystuje browser.DocumentStream wykorzystaniem WinForms Kontrola przeglądarki Myślisz, że DownloadString to naprawi? Mogę utworzyć nowe pytanie, jeśli nie jest to tak proste –

+5

Masz problem z kodowaniem lub musisz ustawić 'User-Agent'. – SLaks

+0

Dzięki SLaks, Używam teraz DownloadString, I lepiej, że masz rację, teraz wynik nieznacznie się różni, nie powinno to mieć znaczenia, ale dostaję rzeczy typu ' newprint

2

Można utworzyć StreamReader wokół strumienia, a następnie zadzwonić StreamReader.ReadToEnd().

StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); 
var responseData = responseReader.ReadToEnd(); 
4

Jak wspomniał @Heinzi, należy użyć zestawu znaków odpowiedzi.

var encoding = response.CharacterSet == "" 
    ? Encoding.UTF8 
    : Encoding.GetEncoding(response.CharacterSet); 

using (var stream = response.GetResponseStream()) 
{ 
    var reader = new StreamReader(stream, encoding); 
    var responseString = reader.ReadToEnd(); 
} 
+0

To powinna być zaakceptowana odpowiedź. –

3

Richard Schneider ma rację. użyj kodu poniżej, aby pobrać dane z witryny, która nie jest zestawem znaków utf8, otrzyma niepoprawny ciąg znaków.

using (Stream stream = response.GetResponseStream()) 
{ 
    StreamReader reader = new StreamReader(stream, Encoding.UTF8); 
    String responseString = reader.ReadToEnd(); 
} 

" nie mogę vote.so napisał.