本文整理自网络,侵删。
一个直接通过URL获取网页源码的例子,与使用TWebbrowser获取网页源码不同,该方法的优点是不需要加载网页直接获取HTML代码,如果网页中图片和媒体较多,使用TWebbrowser加载网页然后再获取源码速度就太慢了,该方法也有一个缺点,函数调用返回前,程序会无法响应其他消息而导致程序无法更新界面。
uses WinInet, Classes, Windows;
function UrlGetStr(const URL: string; ShowHeaders: boolean = false): string;
const
Agent = 'Internet Explorer 6.0';
var
hFile, HInet: HINTERNET;
Buffer: array[0..32767] of Char;
BufRead: Cardinal;
BufSize: Cardinal;
TempStream: TStringStream;
dwIndex: dword;
begin
HInet := InternetOpen(PChar(Agent), INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
if Assigned(HInet) then
try
hFile := InternetOpenUrl(HInet, PChar(URL), nil, 0, 0, 0);
TempStream := TStringStream.Create('');
dwIndex := 0;
BufSize := SizeOf(Buffer);
HttpQueryInfo(hfile, HTTP_QUERY_RAW_HEADERS_CRLF, @Buffer, BufSize, dwIndex);
if ShowHeaders then TempStream.Write(Buffer, BufSize);
if Assigned(hFile) then
try
with TempStream do
try
while InternetReadFile(hFile, @Buffer, BufSize, BufRead) and (BufRead > 0) do
Write(Buffer, BufRead);
Result := DataString;
finally
Free;
end;
finally
InternetCloseHandle(hFile);
end;
finally
InternetCloseHandle(hinet);
end;
end;
相关阅读 >>
Delphi 网上获取北京时间xmlhttprequest如何访问需要安全验证的网站
Delphi rest application 与 webbroker application 区别
Delphi中使用xmlhttp / xmlhttprequest 避免缓存
更多相关阅读请进入《Delphi》频道 >>