Как скачать файл через Proxy
|
- Сынок! Сколько раз тебе говорить, что я тебя родила, а не скачала из интернета!!!
|
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.
|