DELPHI FAQ: Как скачать любой URL используя стандартные настройки сети?


Как скачать любой URL используя стандартные настройки сети?
Previous  Home  Next


Начиная с Internet Explorer 3, Microsoft поддерживает очень полезные API, Wininet. Эти функции позволяют использовать все возможности IE, такие как настройки прокси, кэширование файлов и т.д.

Ниже приведён пример использования этих функций для скачивания файла с нужного URL. Это может быть любой доступный URL, ftp://, http://, gopher://, и т.д.

Более подробную информацию об этих функция можно посмотреть в MSDN - Win32 Internet API Functions.

function
 DownloadFile(const Url: string): string;
var

  NetHandle: HINTERNET;
  UrlHandle: HINTERNET;
  Buffer: array
[0..1024of char;
  BytesRead: cardinal;
begin

  Result := ''
;
  NetHandle := InternetOpen('Delphi 5.x'
, INTERNET_OPEN_TYPE_PRECONFIG, nilnil0);

  if
 Assigned(NetHandle) then
    begin


      UrlHandle := InternetOpenUrl(NetHandle, PChar(Url), nil
0, INTERNET_FLAG_RELOAD, 0);

      if
 Assigned(UrlHandle) then
{ UrlHandle правильный? Начинаем загрузку }

        begin

          FillChar(Buffer, SizeOf(Buffer), 0
);
          repeat

            Result := Result + Buffer;
            FillChar(Buffer, SizeOf(Buffer), 0
);
            InternetReadFile(UrlHandle, @Buffer, SizeOf(Buffer), BytesRead);
          until
 BytesRead = 0;
          InternetCloseHandle(UrlHandle);
        end

      else

        begin

{ UrlHandle неправильный. Генерируем исключительную ситуацию. }

          raise
 Exception.CreateFmt('Cannot open URL %s', [Url]);
        end
;

      InternetCloseHandle(NetHandle);
    end

  else

{ NetHandle недопустимый. Генерируем исключительную ситуацию }

    raise
 Exception.Create('Unable to initialize Wininet');
end
;

Взято с Исходников.ru http://www.sources.ru





DELPHI FAQ




EOMY TOP 100      Рейтинг@Mail.ru      Rambler's Top100