많은 예제를 보았지만 모두 한꺼번에 바이트 배열이나 256 개의 문자로 읽습니다. 왜?WebResponse.GetResponseStream을 문자열로 변환하는 방법은 무엇입니까?
결과로 얻는 Stream
값을 구문 분석 할 수있는 문자열로 변환하는 것은 좋지 않습니까?
많은 예제를 보았지만 모두 한꺼번에 바이트 배열이나 256 개의 문자로 읽습니다. 왜?WebResponse.GetResponseStream을 문자열로 변환하는 방법은 무엇입니까?
결과로 얻는 Stream
값을 구문 분석 할 수있는 문자열로 변환하는 것은 좋지 않습니까?
스트림 주변에 StreamReader
을 작성한 다음 ReadToEnd
으로 전화해야합니다.
WebClient.DownloadString
을 대신 호출하는 것이 좋습니다. 당신은 StreamReader.ReadToEnd()
을 사용할 수 있습니다
그런 다음, 스트림 주위에 StreamReader
을 만들 StreamReader.ReadToEnd()
를 호출 할 수 있습니다.
StreamReader responseReader = new StreamReader(request.GetResponse().GetResponseStream());
var responseData = responseReader.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();
}
이것은 허용 된 대답이어야합니다. –
리처드 슈나이더가 옳다. utf8 charset이 아닌 사이트에서 데이터를 가져 오려면 아래 코드를 사용하면 잘못된 문자열이 표시됩니다.
using (Stream stream = response.GetResponseStream())
{
StreamReader reader = new StreamReader(stream, Encoding.UTF8);
String responseString = reader.ReadToEnd();
}
는 " 나는 vote.so 쓴 수 없습니다.
감사 SLaks을 지금 DownloadString을 검사합니다. 사실 나는 그것이 browser.DocumentStream 사용 윈폼을 사용하여 나의 오래된 응용 프로그램에 비해 다른 소스 코드 문자열을 gettng하고 브라우저 제어. DownloadString이 문제를 해결할 것이라고 생각하십니까? 간단하지 않은 경우 새 질문을 만들 수 있습니다. –
인코딩 문제가 있거나 사용자 에이전트를 설정해야합니다. – SLaks
감사합니다. SLaks, 지금 DownloadString을 사용합니다. 당신이 낫다. 결과가 약간 다르다. 차이를 만들어서는 안되지만,' newprint