Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.04;
Скачать: CL | DM;

Вниз

Помогите, плиз, со скачиванием файла из интернета.   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
15-1191755189
Бисти Бойс
2007-10-07 15:06
2007.11.04
Картинки с этого сайта не показываются


3-1182706645
Jacky
2007-06-24 21:37
2007.11.04
Отслеживание статуса входящего потока данных


15-1190956669
Dmitry S
2007-09-28 09:17
2007.11.04
Фильтр DHCP


15-1191217125
Slider007
2007-10-01 09:38
2007.11.04
С днем рождения ! 1 октября 2007 понедельник


2-1192104024
VICTOR_
2007-10-11 16:00
2007.11.04
ListView и объекты