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 Streamvalor 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-Agentcrees?WebClientyHttpWebRequestuse HTTP sin formato sin navegador involucrado. Si diferentes navegadores muestran diferentes Ver fuentes , es unUser-Agentproblema.Puedes usar
StreamReader.ReadToEnd(),using (Stream stream = response.GetResponseStream()) { StreamReader reader = new StreamReader(stream, Encoding.UTF8); String responseString = reader.ReadToEnd(); }fuente
StreamReaderocupa el segundo parámetroEncoding.UTF8. No meGetResponse and GetResponseStreampuede 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
StreamReaderalrededor de la corriente y luego llamarStreamReader.ReadToEnd().StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream()); var responseData = responseReader.ReadToEnd();fuente