Форум: "Сети";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
ВнизПомогите, плиз, со скачиванием файла из интернета. Найти похожие ветки
← →
Muhh (2007-02-27 20:38) [0]Испльзую вот такую функцию. Но..недостатки следующие:
я скачиваю файл с сайта, где есть авторизация... то есть для того чтобы мне программно его скачать надо сначала авторизироваться в Internet Explorer. Так вот загвоздка именно в том, что именно в IE. Почему в мазиле или опере нельзя? именно в ИЕ.
Так вот отсюда вопрос:
может есть какая нибудь подобная функция, чтобы можно было авторизироваться в каком угодно браузере перед закачкой.
Или в этой функции чтонибудь подправить.
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 else begin
MessageDlg("Не могу скачать файл! Проверьте соединение с Internet", mtCustom,[mbYes], 1);
Form1.Close;
end;
InternetCloseHandle(hSession);
end
end;
← →
Alexey (AZ) (2007-02-27 20:56) [1]Я думаю что копать надо в сторону кукезов... Как это по-АПИшному - не знаю. Сдается мне ещё что можно слать авторизацию через сокеты, но это уже надо куритьсовсем другие мануалы, RFC например.
← →
muhh (2007-02-27 23:02) [2]раздражает такая тема...я эксплорером уже давно не пользуюсь :(
← →
DiamondShark © (2007-02-28 12:36) [3]
> может есть какая нибудь подобная функция, чтобы можно было
> авторизироваться в каком угодно браузере перед закачкой.
>
Конечно есть.
HTTP протокол абсолютно индеферентен к используемым клиентам.
Какие-либо ограничения могут вводиться только прикладной логикой сервера на основании полученной от клиента информации.
Поставь какой-нибудь HTTP-сниффер, проведи успешный сеанс, и посмотри внимательно что передаётся серверу, что он отвечает, потом воспроизведи.
← →
muhh (2007-03-03 18:24) [4]к сожалению это для меня сложно :) мало чего я понимаю в этом
← →
zap8 (2007-03-04 08:50) [5]Тебе надо в заголовке который указывантся как один из
пераметров функции InternetOpenURL добавить поле
по стандарту HTTP протокола с ответом серверу на
полученный запрос от сервера на автоизацию, а другие клиеты здесь не причем, конечно ты или пользователь должен знать и пороль и имя.
function InternetOpenUrlA(hInet: HINTERNET; lpszUrl: PAnsiChar;
lpszHeaders: PAnsiChar; dwHeadersLength: DWORD; dwFlags: DWORD;
dwContext: DWORD): HINTERNET; stdcall;
Заголовок формируется по стандартным правилам. Одним словом
без изучения RFC по HTTP протоколу пользоваться функциями WinInet
одна головная боль, появятся и другие проблеммы, не только автоизация.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2007.11.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c