How to convert WebResponse.GetResponseStream return into a string?

前端 未结 5 1195
春和景丽
春和景丽 2020-12-05 12:17

I see many examples but all of them read them into byte arrays or 256 chars at a time, slowly. Why?

Is it not advisable to just convert the resulting Stream

相关标签:
5条回答
  • 2020-12-05 13:00

    As @Heinzi mentioned the character set of the response should be used.

    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 讨论(0)
  • 2020-12-05 13:07

    Richard Schneider is right. use code below to fetch data from site which is not utf8 charset will get wrong string.

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

    " i can't vote.so wrote this.

    0 讨论(0)
  • 2020-12-05 13:20

    You should create a StreamReader around the stream, then call ReadToEnd.

    You should consider calling WebClient.DownloadString instead.

    0 讨论(0)
  • 2020-12-05 13:20

    You can use StreamReader.ReadToEnd(),

    using (Stream stream = response.GetResponseStream())
    {
       StreamReader reader = new StreamReader(stream, Encoding.UTF8);
       String responseString = reader.ReadToEnd();
    }
    
    0 讨论(0)
  • 2020-12-05 13:21

    You can create a StreamReader around the stream, then call StreamReader.ReadToEnd().

    StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
    var responseData = responseReader.ReadToEnd();
    
    0 讨论(0)
提交回复
热议问题