Veo muchos ejemplos, pero todos los leen en matrices de bytes o 256 caracteres a la vez, lentamente. ¿Por qué?
¿No es aconsejable simplemente convertir el Stream
valor resultante en una cadena donde pueda analizarlo?
c#
.net
string
httpwebresponse
Joan Venge
fuente
fuente
User-Agent
.<a href=
lugar del anterior que era<A href=
. ¿Eso todavía está relacionado con la codificación oUser-Agent
crees?WebClient
yHttpWebRequest
use HTTP sin formato sin navegador involucrado. Si diferentes navegadores muestran diferentes Ver fuentes , es unUser-Agent
problema.Puedes usar
StreamReader.ReadToEnd()
,using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); }
fuente
StreamReader
ocupa el segundo parámetroEncoding.UTF8
. No meGetResponse and GetResponseStream
puede lanzar excepcionesComo mencionó @Heinzi, 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(); }
fuente
Richard Schneider tiene razón. use el código a continuación para obtener datos del sitio que no sea utf8 charset obtendrá una cadena incorrecta.
using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); }
"No puedo votar. Así que escribí esto.
fuente
Puede crear un
StreamReader
alrededor de la corriente y luego llamarStreamReader.ReadToEnd()
.StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); var responseData = responseReader.ReadToEnd();
fuente