Вытащить значение с веб-страницы - PullRequest
1 голос
/ 08 января 2012

Я хочу получить одно значение с веб-сайта, рассматриваемая страница - это просто файл без расширения, содержащий число, без HTML-кода - ничего.

Все, что я хочу сделать, этозаставить мою программу вытащить эту цифру и сравнить ее с собственным номером версии.Что будет лучшим способом получить это?Я написал небольшой фрагмент, чтобы загрузить файл и сохранить его во временном каталоге, а затем обработать рисунок в загруженном файле, но должен быть лучший способ, если я не ошибаюсь?

Я читал олюди, использующие запросы SOAP, но я не уверен, что это то, что я хочу.

Любая помощь будет признательна.

Ответы [ 2 ]

5 голосов
/ 08 января 2012

Delphi поставляется с компонентами Indy.Вы можете использовать метод Get() компонента TIdHTTP для загрузки содержимого файла в String, например:

var
  Version: String;
begin
  Version := IdHTTP1.Get('http://url_here');
  ...
end;
5 голосов
/ 08 января 2012

Вот как получить строку из 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'));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...