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

Вниз

Получить HTML код через proxy   Найти похожие ветки 

 
ArhArhangel ©   (2006-09-18 13:23) [0]

Здравствуйте!
Нижеприведенная функция берет html код странички с Интернета через proxy.
Если эту функцию использую просто как программу и запускаю от своего пользователя, то все работает, но когда делаю её как системную службу, коннекта не происходит.
Присылает страницу со следующим текстом:
ERROR
Cache Access Denied
________________________________________
While trying to retrieve the URL:http://www.rambler.ru/
The following error was encountered:
 Cache Access Denied.
Sorry, you are not currently allowed to request:
   http://www.rambler.ru/
________________________________________


function GetThePage(Adres,getStr:String): String;
var   hOpenHandle,hSession, hConnectHandle, hResourceHandle: HInternet;
     strUsername, strPassword: Array[0..81] of char;
     pcData: Array [0..1023] of char;
     dwStatusSize, dwBytesRead: DWORD;
     cchUserLength, cchPasswordLength: DWORD;
     dwStatus: DWORD;
     vas: cardinal;
     bRead: boolean;

     i:integer;
     Buffer: Array[1..1024] of Char;
     BufferLen: LongWord;

Label   resend;

begin

 dwStatusSize:= SizeOf(dwStatus);

 lstrcpy(@strUsername,PChar(ProxyUsername));
 lstrcpy(@strPassword,PChar(ProxyPassword));
 cchUserLength:= Length(strUsername);
 cchPasswordLength:= Length(strPassword);

 //Соединимся с интернет
 hOpenHandle:= InternetOpen("Example", INTERNET_OPEN_TYPE_PROXY, "172.31.51.7:80", "", 0); //PChar(ProxyIP), PChar(ProxyPort)
 //Откроем новую сессию
 hConnectHandle:= InternetConnect(hOpenHandle, PChar(Adres), INTERNET_DEFAULT_HTTP_PORT, NIL, NIL, INTERNET_SERVICE_HTTP,0,0);
 //Создадим указатель и укажем необходимые параметры для использования протокола HTTP
 hResourceHandle:= HttpOpenRequest(hConnectHandle, "GET", PChar(getStr), NIL, NIL, NIL, INTERNET_FLAG_KEEP_CONNECTION, 0);

 InternetSetOption(hResourceHandle, INTERNET_OPTION_PROXY_USERNAME, @strUsername, cchUserLength+1);
 InternetSetOption(hResourceHandle, INTERNET_OPTION_PROXY_PASSWORD, @strPassword, cchPasswordLength+1);

 //InternetSetOption(hResourceHandle, INTERNET_OPTION_PROXY_USERNAME, @ProxyUsername, length(ProxyUsername)+1);
 //InternetSetOption(hResourceHandle, INTERNET_OPTION_PROXY_PASSWORD, @ProxyPassword, length(ProxyPassword)+1);

 resend:

 HttpSendRequest(hResourceHandle, NIL, 0, NIL, 0);
 vas:=0;
 //получим информацию о файле
 HttpQueryInfo(hResourceHandle, HTTP_QUERY_FLAG_NUMBER or HTTP_QUERY_STATUS_CODE, @dwStatus, dwStatusSize, vas);

 i:=0;

Result:="";
 while (1=1) do
   begin
     bRead:=internetReadFile(hResourceHandle,@pcData,1024,dwBytesRead);  //считываем файл
     Result:=Result+pcData;
     if ( not bRead) then break;
     if (dwBytesRead = 0) then
     break;
   end;
// InternetCloseHandle(hOpenHandle);
end;


 
Rouse_ ©   (2006-09-18 16:13) [1]

Ну так что ты хочешь? Это прокси тебя не пускает, проверяй правильность прихода в функцию ProxyUsername и ProxyPassword


 
Ketmar ©   (2006-09-18 16:31) [2]

есть подозрение, что там NTLM-аутентификация. натурально, сервир работает не под юзерским аккаунтом. %-)


 
Rouse_ ©   (2006-09-18 16:46) [3]

Хм, кстати действительно, похоже тут Ketmar прав...
Попробуй сервис запускать не от имени Local System (по умолчанию) а по имени твоего пользователя - паролю...


 
ArhArhangel ©   (2006-09-19 04:44) [4]

Спасибо!

А можно как-нибудь программно проходить NTLM-аутентификацию?


 
Ketmar ©   (2006-09-19 05:00) [5]

> [4] ArhArhangel ©   (19.09.06 04:44)
а сейчас она что, магически работает? %-) всё можно. только нужно или работать под требуемым аккаунтом, или знать логин/пароль.



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

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

Наверх




Память: 0.48 MB
Время: 0.03 c
2-1170545848
ssss
2007-02-04 02:37
2007.02.25
программу во все окно!


2-1170753777
НиколайКо
2007-02-06 12:22
2007.02.25
Как определить версию платформы?


2-1170752763
Juice
2007-02-06 12:06
2007.02.25
raise Exception


1-1168220567
Sleepeer
2007-01-08 04:42
2007.02.25
Перехват процесса выполнения определённых функций из чужой DLL


15-1170237500
suturn
2007-01-31 12:58
2007.02.25
Help!!!