Главная страница
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.025 c
1-1208194778
gear
2008-04-14 21:39
2009.03.29
Локализация "на лету"


2-1234157479
Гарик
2009-02-09 08:31
2009.03.29
Создание форм


15-1232283018
saNat
2009-01-18 15:50
2009.03.29
Нет доступа к сетевым папкам


1-1208087201
@!!ex
2008-04-13 15:46
2009.03.29
Может ли существовать форма без Applicationа?


2-1233552018
Тимоха
2009-02-02 08:20
2009.03.29
Организация работы потоков