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

Вниз

WinInet и закачка файла из Интернет через прокси с авторизацией.   Найти похожие ветки 

 
cruiser ©   (2009-02-02 22:03) [0]

Уважаемые мастера! Данный код закачивает некий файл с сервера в Интернет. Подскажите, "сбился с ног" в поисках ответа, но не могу никак понять как же мне в данном коде указать wininet пароль и логин юзера для авторизации на прокси-сервере. Ничего не получается. Поиск по яндексам\рамблерам\гуглам к ответу не привел.

function DownloadFile(const FileURL, FileName: String): Cardinal;
var
  hSession,  hFile: HInternet;
 Buffer: array[1..1024] of byte;
 BufferLen, fSize: LongWord;
 f: File;
 access:cardinal;
 proxy, user, pass: pchar;
begin
 Result := 0;
if form7.checkbox4.checked then   access:= INTERNET_OPEN_TYPE_PROXY else access:=INTERNET_OPEN_TYPE_PRECONFIG;

if form7.CheckBox1.Checked then
   proxy:= pchar(form7.edit1.Text) else proxy:=nil;
  if form7.CheckBox2.Checked then
   user:= pchar(form7.edit2.Text) else user:=nil;
 if form7.CheckBox3.Checked then
   pass:= pchar(form7.edit3.Text) else pass:=nil;

hSession := InternetOpen("GetURL",
 access,
 proxy,
 nil,
 0);
// пробуем указать логин-пароль
if form7.CheckBox2.Checked then
    InternetSetOption (hSession, INTERNET_OPTION_PROXY_USERNAME,
            user, lstrlen (user));

 if form7.CheckBox2.Checked then
 InternetSetOption (hSession, INTERNET_OPTION_PROXY_PASSWORD,
            pass, lstrlen (pass));
// вызываем сессию еще раз (по идее должны подхватиться параметры заданные SetOptions)

hSession := InternetOpen(GetURL,
                         access,
                         proxy ,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;

Заранее благодарю за ответы! D2009


 
Rouse_ ©   (2009-02-03 11:49) [1]

Вот это попробуй, там лоин и пароль в параметрах функции задается:
http://rouse.drkb.ru/network.php#proxyload


 
cruiser ©   (2009-02-03 13:16) [2]

Спасибо. Нужный код. Я так понял что нужна именно связка InternetOpen- InternetConnect-httpQueryReqest... Попробую привязать к своему коду. Единственный вопрос - как тот проект можно по ссылке можно использовать в другом коде? Т.е. подключать через uses или что?


 
Rouse_ ©   (2009-02-03 17:42) [3]

Выдираешь саму функцию и используешь :) В виде отдельного модуля я не оформлял.


 
cruiser ©   (2009-02-03 18:04) [4]

Спасибо. Буду пробовать.



Страницы: 1 вся ветка

Текущий архив: 2009.03.29;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
6-1201613360
Yurij-7
2008-01-29 16:29
2009.03.29
Отправка писем через Indy


15-1232851838
Vjik
2009-01-25 05:50
2009.03.29
Очень важные сообщения


2-1233154388
flaxe
2009-01-28 17:53
2009.03.29
Вопрос про работу с opengl


15-1232509901
Slider007
2009-01-21 06:51
2009.03.29
С днем рождения ! 21 января 2009 среда


3-1217426639
kirillrepin
2008-07-30 18:03
2009.03.29
как в ДБГриде наименование в две строки?