我正在尝试获取网页的内容长度。例如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();
}
responseLength总是-1,但是结果.Length有一些值,这是正确的吗?
答案 0 :(得分:2)
responseLength总是-1,但是结果.Length有一些值,这是正确的吗?
可能是某些网站(或某些网站上的某些回复) - 在其他情况下,您会看到responseLength
的非负值。您所做的只是获取可选的Content-Length
HTTP标头,基本上......无论是否提供,都取决于服务器。
请注意,响应长度(如果提供)将以字节为单位 - 而result.Length
为UTF-16代码单元。如果您希望内容长度为 bytes ,则应直接从流中读取二进制数据,而不是创建StreamReader
并将其作为文本读取。
答案 1 :(得分:0)
我想你想要DownloadString,然后查看长度。
Console.WriteLine(new WebClient().DownloadString("https://google.com/").Length);