2011-09-25 1 views

답변

57

스트림 주변에 StreamReader을 작성한 다음 ReadToEnd으로 전화해야합니다.

WebClient.DownloadString을 대신 호출하는 것이 좋습니다. 당신은 StreamReader.ReadToEnd()을 사용할 수 있습니다

+1

감사 SLaks을 지금 DownloadString을 검사합니다. 사실 나는 그것이 browser.DocumentStream 사용 윈폼을 사용하여 나의 오래된 응용 프로그램에 비해 다른 소스 코드 문자열을 gettng하고 브라우저 제어. DownloadString이 문제를 해결할 것이라고 생각하십니까? 간단하지 않은 경우 새 질문을 만들 수 있습니다. –

+5

인코딩 문제가 있거나 사용자 에이전트를 설정해야합니다. – SLaks

+0

감사합니다. SLaks, 지금 DownloadString을 사용합니다. 당신이 낫다. 결과가 약간 다르다. 차이를 만들어서는 안되지만,' newprint

2

그런 다음, 스트림 주위에 StreamReader을 만들 StreamReader.ReadToEnd()를 호출 할 수 있습니다.

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

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

이것은 허용 된 대답이어야합니다. –

3

리처드 슈나이더가 옳다. utf8 charset이 아닌 사이트에서 데이터를 가져 오려면 아래 코드를 사용하면 잘못된 문자열이 표시됩니다.

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

는 " 나는 vote.so 쓴 수 없습니다.