Текущий архив: 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.46 MB
Время: 0.155 c