从网页中提取值

时间:2012-01-07 22:57:58

标签: delphi soap version

我想从网站中提取单个值,有问题的页面只是一个没有包含数字的扩展名的文件,没有HTML代码 - 没有。

我想做的就是让我的程序拉出这个数字并将它与它自己的版本号进行比较。什么是获取此功能的最佳方式?我写了一个小片段来下载文件并将其保存在临时目录中然后处理下载文件中的数字但是如果我没有弄错的话还有更好的方法吗?

我读过有关使用SOAP请求的人,但我不确定这是否是我想要的。

任何帮助都将不胜感激。

2 个答案:

答案 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;