从网页中提取值

1 delphi soap version

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

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

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

任何帮助,将不胜感激.

And*_*and 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;
Run Code Online (Sandbox Code Playgroud)

这就是我自己的软件AlgoSim检查更新的方式.比如试试吧

ShowMessage(WebGetData('My User Agent', 'services.rejbrand.se',
  '/algosim/update/ver.asp'));
Run Code Online (Sandbox Code Playgroud)


Rem*_*eau 5

Delphi附带Indy组件.您可以使用组件的Get()方法TIdHTTP将文件内容下载到String例如:

var
  Version: String;
begin
  Version := IdHTTP1.Get('http://url_here');
  ...
end;
Run Code Online (Sandbox Code Playgroud)