在Delphi中使用此代码获取网页大小:(我的意思是页面源大小)
uses
IdHTTP
function URLsize(const URL : string) : integer;
var
Http: TIdHTTP;
begin
Http := TIdHTTP.Create(nil);
try
Http.Head(URL);
result := round(Http.Response.ContentLength / 1048576); //MB
finally
Http.Free;
end;
end;
我可以轻松获取某些网址,例如http://sample.com/test.exe
。它以MB为单位返回大小。
但是,对于像http://stackoverflow.com/
这样的网址,我无法使用此代码获取网址大小。它返回0
或-1
。
在这种情况下如何获得尺寸?
答案 0 :(得分:8)
并非所有HTTP HEAD响应都包含content-length。所以,一般来说,你想做的事情是不可能的。如果您遇到不包含内容长度的响应,则需要下载内容以查找长度。
答案 1 :(得分:3)
即使Web服务器确实返回了正确的内容长度,您也要将其除以1048576
以获取兆字节值。由于http://stackoverflow.com/
远小于一兆字节,因此返回0
。我仍然难以置信-1
来自哪里 - 因为http://stackoverflow.com/
为我返回194569
,没有分开。你从其他网站得到了-1
吗?您的结果是Http.Response.ContentLength
的分割值或原始值吗?