Получить HTML код через proxy
От: ArhArhangel  
Дата: 18.09.06 09:34
Оценка:
Здравствуйте!
Нижеприведенная функция берет 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;
Re: Получить HTML код через proxy
От: Firstborn Латвия  
Дата: 18.09.06 13:24
Оценка:
Здравствуйте, ArhArhangel, Вы писали:

Ну, и?
В тексте поста ни одного вопроса... К чему тогда текст?
Re: Получить HTML код через proxy
От: wildwind Россия  
Дата: 18.09.06 15:16
Оценка:
Здравствуйте, ArhArhangel, Вы писали:

Запускай программу от имени такого пользователя, которого прокси может аутентифицировать и которому разрешен доступ к нужным сайтам.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.