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

Начиная с 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..1024] of char;

 BytesRead: cardinal;

begin

 Result := '';

 NetHandle := InternetOpen('Delphi 5.x', INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

 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;

Взято из http://forum.sources.ru

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...