[c#] WebResponse.GetResponseStream 반환을 문자열로 변환하는 방법은 무엇입니까?

많은 예제를 보았지만 모두 천천히 바이트 배열 또는 한 번에 256 문자로 읽습니다. 왜?

결과 Stream값을 구문 분석 할 수있는 문자열로 변환하는 것은 좋지 않습니까?



답변

StreamReader스트림 주변에 생성 한 다음 ReadToEnd.

WebClient.DownloadString대신 전화 를 고려해야 합니다.


답변

당신은 사용할 수 있습니다 StreamReader.ReadToEnd(),

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


답변

@Heinzi가 언급했듯이 응답의 문자 집합을 사용해야합니다.

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


답변

Richard Schneider가 옳습니다. 아래 코드를 사용하여 utf8 문자 집합이 아닌 사이트에서 데이터를 가져 오면 잘못된 문자열이 표시됩니다.

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

“나는 투표 할 수 없습니다. 그래서 이것을 썼습니다.


답변

당신은을 만들 수 있습니다 StreamReader다음, 스트림 주위에 전화 StreamReader.ReadToEnd().

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


답변