2016-08-31 3 views
0

웹 페이지의 콘텐츠 길이를 얻으려고합니다. 예 : http://www.google.com.웹 사이트 콘텐츠 길이 읽기

나는 C#을 사용하고 있으며, 아래에 사용 된 코드가 있으며 정확한 길이를주지 않거나하지 않습니다. 어떤 사람이 유효성을 검사 할 수 있습니까?

var request = (HttpWebRequest)WebRequest.Create("http://www.google.com.au"); 
request.Method = "GET"; 
var myResponse = request.GetResponse(); 
var responseLength = myResponse.ContentLength; 

using (var sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8)) 
{ 
    var result = sr.ReadToEnd(); 
    myResponse.Close(); 
} 

응답 길이는 -1이지만 결과는 length입니다. 길이는 약간의 값을 가졌습니까?

+0

예, ContentLength는 서버 (헤더가 제 전송되어야 함을 특정 동적 콘텐츠 것도 가능 또는) 항상 그런 것은 아니다 응답 헤더 값을 제공 할 것을 요구, 신뢰성없는 –

답변

2

응답 길이는 -1이지만 결과는 length입니다. 길이는 약간의 값을 가졌습니까?

일부 웹 사이트 (일부 웹 사이트에서는 일부 응답 일 수 있음) - 다른 경우에는 responseLength에 음수가 아닌 값이 표시됩니다. 당신이하는 일은 선택적인 Content-Length HTTP 헤더를 가져 오는 것입니다. 기본적으로 서버가 제공하는 것이 든 아니든간에 서버에 달려 있습니다.

응답 길이는 제공된 경우 바이트 단위이며, result.Length은 UTF-16 코드 단위입니다. 콘텐츠 길이를 바이트으로하려면 StreamReader을 만들고 텍스트로 읽는 대신 스트림에서 이진 데이터를 직접 읽어야합니다.

0

DownloadString을 누른 다음 길이를 확인하고 싶습니다.

Console.WriteLine(new WebClient().DownloadString("https://google.com/").Length);