Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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.044 c
11-1175322891
Trible
2007-03-31 10:34
2007.11.04
Содержимое RichEdit


2-1192368884
Blind Guardian
2007-10-14 17:34
2007.11.04
Странная штука с записью и чтением в и из файла


2-1192027076
smaller
2007-10-10 18:37
2007.11.04
Как непрерывно выводить звук, с плавно меняющейся частотой?


11-1175358495
Dmitriy___
2007-03-31 20:28
2007.11.04
Collapse


15-1191309392
AndrewK
2007-10-02 11:16
2007.11.04
Затрудняюсь с выбором. Подскажите, плиз.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский