我想从网站中提取单个值,有问题的页面只是一个没有包含数字的扩展名的文件,没有HTML代码 - 没有。
我想做的就是让我的程序拉出这个数字并将它与它自己的版本号进行比较。什么是获取此功能的最佳方式?我写了一个小片段来下载文件并将其保存在临时目录中然后处理下载文件中的数字但是如果我没有弄错的话还有更好的方法吗?
我读过有关使用SOAP请求的人,但我不确定这是否是我想要的。
任何帮助都将不胜感激。
答案 0 :(得分:5)
这是从HTTP GET请求获取字符串的方法:
function WebGetData(const UserAgent: string; const Server: string;
const Resource: string): string; overload;
var
hInet: HINTERNET;
hURL: HINTERNET;
Buffer: array[0..1023] of AnsiChar;
i, BufferLen: cardinal;
begin
result := '';
hInet := InternetOpen(PChar(UserAgent), INTERNET_OPEN_TYPE_PRECONFIG,
nil, nil, 0);
if hInet = nil then RaiseLastOSError;
try
hURL := InternetOpenUrl(hInet, PChar('http://' + Server + Resource),
nil, 0, 0, 0);
if hURL = nil then RaiseLastOSError;
try
repeat
InternetReadFile(hURL, @Buffer, SizeOf(Buffer), BufferLen);
if BufferLen = SizeOf(Buffer) then
result := result + AnsiString(Buffer)
else if BufferLen > 0 then
for i := 0 to BufferLen - 1 do
result := result + Buffer[i];
until BufferLen = 0;
finally
InternetCloseHandle(hURL);
end;
finally
InternetCloseHandle(hInet);
end;
end;
这就是我自己的软件AlgoSim检查更新的方式。例如,尝试
ShowMessage(WebGetData('My User Agent', 'services.rejbrand.se',
'/algosim/update/ver.asp'));
答案 1 :(得分:5)
Delphi附带Indy组件。您可以使用Get()
组件的TIdHTTP
方法将文件内容下载到String
,例如:
var
Version: String;
begin
Version := IdHTTP1.Get('http://url_here');
...
end;