/////代码
function URLDownloadToString(Const sURL: String; var sBuf : AnsiString): Boolean;
var
ppStream : IStream;
statstg : TStatStg;
dwRead : Integer;
begin
Result := False;
sBuf := '';
if (URLOpenBlockingStream(nil, PChar(sURL), ppStream, 0, nil) <> S_OK) then exit;
//showmessage('111');
try
if (ppStream.Stat(statstg, STATFLAG_NONAME) = S_OK) and (statstg.cbSize>0) then begin
SetLength(sBuf , statstg.cbSize);
try
Result := (ppStream.Read(Pointer(sBuf), statstg.cbSize, @dwRead) = S_OK);
ppStream := nil;
// showmessage('22');
finally
end;
end;
finally
ppStream := nil;
end;
end;
////////////////////////////////
procedure TForm1.Button3Click(Sender: TObject);
var
sBuf : AnsiString;
begin
URLDownloadToString('https://www.baidu.com' , sBuf);
Memo3.Text := sBuf;
end;
//////
连续用URLOpenBlockingStream,获取网页的内容不随网站实时更新,每次调用这个函数获取的网页内容都和第一次时调用的内容一模一样。但是网页的内容实际已经更新了。
我发现第一次get https时有延迟说明有是获取的https链接的内容,从第二次开始get就没有延迟了,好像直接拷贝的内存瞬间就好了。
我查阅了网上的资料,很少,解决不了我的问题。
我放在子线程里和主线程里互相调用 结果页是不行。
请大侠不吝赐教!