//下载过程中通过进度回调获取实时下载进度,通过头部回调获取头部信息
sid:=createhttpsession();
sethttpcallback(sid,findfunction("DownProg")); //进度回调
sethttpcallback(sid,findfunction("head"),"header");//头部回调
s:="http://www.baidu.com"; //小型下载
m:="http://www.tinysoft.com/download/setup64.exe";//具备下载总量的下载
l:="http://speed.cloudflare.com/__down?bytes=123456789"; //头部没有content-length的下载
r:=GetHttp(s,60000,v,code); //可以用s/m/l看看区别
echo "\r\n=>done ",r,'->',code,'->',length(v),"\r\n";
return 1;
//进度回调函数
function DownProg(sid,AlldnB,dnB,AllupB,upB); //progresscallback
begin
if dnB > 0 then //如果已开始下载则打印
begin
R:=AlldnB>0?dnB/AlldnB*100:0;
S:= "->"+DupeString(#8,Ceil(R/10));
echo S,int(R),"% ",dnB$"/",AlldnB,"\r\n";
end;
return 0; //请求继续,返回其它,如return 1;则表示请求到此处就结束
end;
//头部回调模型
function head(sid,hline);
begin
echo hline;
//if hline="\r\n" then
//return -1; //如果返回header后就结束请求打开这两行即可
return 0;//请求继续
end;
打印效果:
