Как скачать файл через Proxy

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

— Сынок! Сколько раз тебе говорить, что я тебя родила, а не скачала из интернета!!!

DownloadFile(‘http://some.com/some.zip’, ‘c:\some.zip’);

function DownloadFile(const FileURL, FileName: String): Cardinal;

var

hSession, hFile: HInternet;

Buffer: array[1..1024] of Byte;

BufferLen, fSize: LongWord;

f: File;

begin

Result := 0;

hSession := InternetOpen(‘STEROID Download’,

INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);

if Assigned(hSession) then begin

hFile := InternetOpenURL(hSession, PChar(FileURL), nil, 0,

INTERNET_FLAG_RELOAD, 0);

if Assigned(hFile) then begin

AssignFile(f, FileName);

Rewrite(f,1);

fSize := 0;

repeat

InternetReadFile(hFile, @Buffer, SizeOf(Buffer), BufferLen);

BlockWrite(f, Buffer, BufferLen);

fSize := fSize BufferLen;

until (BufferLen = 0);

CloseFile(f);

Result := fSize;

InternetCloseHandle(hFile);

end;

InternetCloseHandle(hSession);

end;

end;

Комментарий:

function InternetOpen(lpszAgent: PChar;

dwAccessType: DWORD;

lpszProxy, lpszProxyBypass: PChar;

dwFlags: DWORD): HINTERNET; stdcall;

lpszAgent — строка символов, которая передается серверу и идентифицирует программное обеспечение, пославшее запрос.

dwAccessType

INTERNET_OPEN_TYPE_DIRECT : обрабатывает все имена хостов локально.

INTERNET_OPEN_TYPE_PRECONFIG : берет установки из реестра.

INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY — берет установки из реестра и предотвращает запуск Jscript или Internet Setup (INS) файлов.

! INTERNET_OPEN_TYPE_PROXY : использование прокси-сервера. В случае неудачи использует INTERNET_OPEN_TYPE_DIRECT.

LpszProxy — адрес прокси-сервера. Игнорируется только если параметр dwAccessType отличается от INTERNET_OPEN_TYPE_PROXY.

LpszProxyBypass — список имен или IP- адресов, соединяться с которыми нужно в обход прокси-сервера. В списке допускаются шаблоны. Так же, как и предыдущий параметр, не может содержать пустой строки. Если dwAccessType отличен от INTERNET_OPEN_TYPE_PROXY, то значения игнорируются, и параметр можно установить в nil.

DwFlags задает параметры, влияющие на поведение Internet- функций. Возможно применение комбинации из следующих разрешенных значений: INTERNET_FLAG_ASYNC, INTERNET_FLAG_FROM_CACHE, INTERNET_FLAG_OFFLINE.

{/codecitation}

Добавить комментарий