![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить работоспособность PROXY
chum © (2003-03-12 15:08:00)Как проверить работоспособность PROXY средствами WinAPI. Например используя winsock. При этом необходимо указывать порт.
Ihor Osov'yak (2003-03-12 16:25:00) [1]Проверил. Действительно так. Но для левого прокси InternetOpenUrl возвратит nil..
Делай примерно так:
var
hHttpSession,hReqUrl:HInternet;
Buffer:array[0..1023] of char;
sWork:string;
nRead:cardinal;
begin
res:="";
flOk:=false;
try
if not userPrm.enCustomProxy
then hHttpSession := InternetOpen(agentName,INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0)
else begin
if userPrm.enUseProxy
then hHttpSession := InternetOpen(agentName,INTERNET_OPEN_TYPE_PROXY,
PChar(userPrm.proxyAddr),PChar(userPrm.proxyPort),0)
else hHttpSession := InternetOpen(agentName,INTERNET_OPEN_TYPE_DIRECT,
PChar(userPrm.proxyAddr),PChar(userPrm.proxyPort),0)
end;
if not assigned(hHttpSession) then exit;
try
hReqUrl := InternetOpenUrl(hHTTPSession,PChar(url),nil,0,
//INTERNET_FLAG_PRAGMA_NOCACHE,
INTERNET_FLAG_RELOAD,
0);
if not assigned(hReqUrl) then exit;
try
repeat
InternetReadFile(hReqUrl,@Buffer,sizeof(Buffer),nRead);
if nRead>0 then begin
SetLength(sWork,nRead);
Move(buffer,sWork[1],nRead);
res:=res+sWork;
end;
until nRead=0;
flOk:=true;
finally
InternetCloseHandle(hReqUrl);
end;
finally
InternetCloseHandle(hHTTPSession);
end;
except
end;
chum (2003-03-12 16:15:00) [2]Попробовал InternetOpen. Функции всё равно какой прокси, она всегда устанавливает соединение. Что делать?
chum (2003-03-12 15:29:00) [3]Спасибо.
Ihor Osov'yak (2003-03-12 15:22:00) [4]InternetOpen from WinIne с последующим (возможно) InternetOpenUrl и InternetReadFile ...
InternetOpen подразумевает среди прочего указание параметров прокси, через который собираемся работать...