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

Previous  Top  Next

    
 

 

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

 

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

 

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

Code:

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;

 

 

©Drkb::03577

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