2011-09-25 11 views

Respuesta

57

Debería crear un StreamReader alrededor de la transmisión, luego llamar al ReadToEnd.

En su lugar, debería considerar llamar al WebClient.DownloadString.

+1

, gracias SLaks, comprobando DownloadString ahora. En realidad estoy gettng diferentes cadenas de código fuente en comparación con mi antiguo aplicación donde se utiliza browser.DocumentStream utilizando Windows Forms Control del navegador. ¿Cree que DownloadString lo arreglaría? Puedo crear una nueva pregunta si no es tan sencillo. –

+5

O tiene un problema de codificación o necesita establecer un 'User-Agent'. – SLaks

+0

Gracias SLaks, uso DownloadString ahora, y es mejor que tengas razón. Ahora el resultado difiere ligeramente, no debería marcar la diferencia pero obtengo cosas como '

118

Puede utilizar StreamReader.ReadToEnd(),

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

¡Impresionante! Ahora es fácil hacer y analizar XML. –

+1

@FaizanMubasher - Me gustaría sugerir el LINQ a XML. – adatapost

+2

Es genial que haya señalado que 'StreamReader' toma el segundo parámetro' Encoding.UTF8'. No se dio cuenta de que al principio al mirar la documentación de MS – newprint

2

Se puede crear un StreamReader alrededor de la corriente, a continuación, llamar StreamReader.ReadToEnd().

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

Como @Heinzi mencionó, se debe usar el conjunto de caracteres de la respuesta.

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

Esta debería ser la respuesta aceptada. –

3

Richard Schneider tiene razón. use el siguiente código para obtener datos del sitio que no es utf8 charset obtendrá una cadena incorrecta.

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

" no puedo vote.so escribió esto.