Question Comment convertir WebResponse.GetResponseStream dans une chaîne?


Je vois beaucoup d'exemples, mais tous les lisent lentement dans les tableaux d'octets ou les 256 caractères. Pourquoi?

N'est-il pas conseillé de simplement convertir le résultat Stream valeur dans une chaîne où je peux l'analyser?


74
2017-09-25 02:44


origine


Réponses:


Vous devriez créer un StreamReader autour du flux, puis appelez ReadToEnd.

Vous devriez envisager d'appeler WebClient.DownloadString au lieu.


58
2017-09-25 02:49



Vous pouvez utiliser StreamReader.ReadToEnd(),

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

123
2017-09-25 02:53



Comme @Heinzi a mentionné le jeu de caractères de la réponse devrait être utilisé.

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();
}

6
2017-10-09 15:22



Richard Schneider a raison utilisez le code ci-dessous pour récupérer les données du site qui n'est pas utf8.

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

" Je ne peux pas voter.so a écrit ceci.


4
2017-08-27 04:53



Vous pouvez créer un StreamReader autour du flux, puis appelez StreamReader.ReadToEnd().

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

2
2017-08-11 11:40