Difference between revisions of "IPConnection.Create"
1>Admin (Created page with "{{infobox function |name=Create |object=Объект IP |caption=Создание неактивного объекта |type=1 |status=2 |db=0 |visual=0}} {{HeadLinks| *...") |
m (1 revision imported) |
(No difference)
| |
Latest revision as of 18:07, 20 November 2021
| Create (Создание неактивного объекта) | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Функция создает неактивный объект соединения, который затем можно использовать, к примеру, для задания прокси сервера и дальнейшего соединения с удаленным сервером.
Синтаксис
IPConnection.Create():<Новое неактивное соединение (IPOBJECT)>
Возвращаемое значение
Возвращается новый неактивный объект IP.
Примеры
//Измененный пример из статьи Connect показывает, как можно осуществить загрузку веб-страницы по ее адресу посредством SOCKS5 прокси сервера.
//Для загрузки по протоколу https требуется указание пути к библиотекам OpenSSL или LibreSSL.
Function LoadPage(URL)
bHTTPs:=pos("https://",Lowercase(URL));
If pos("//",URL)>0 Then
tearStr(URL,"//");
EndIf;
СтрДоб:=URL;
URL:=tearStr(СтрДоб,"/");
//URL может содержать название параграфа
СтрДоб:=TearStr(СтрДоб,"#");
For i:=1 to 3 Do
//Создаем неактивное соединение
tcp:=IPConnection.Create();
//Задаем прокси сервер для текущего соединения
tcp.UseProxy("192.168.1.1:8080","SOCKS5","User","test123");
if bHTTPs Then
tcp.Connect(URL+?(Pos(":",URL)+Pos("=",URL)=0,"=443"),1);
Else
tcp.Connect(URL+?(Pos(":",URL)+Pos("=",URL)=0,"=80"));
EndIf;
if tcp.IsConnected Then
Break;
EndIf;
EndDo;
if not tcp.IsConnected Then
Message("Could not connect: "+URL,"!");
Exit;
EndIf;
СтрДоб:="/"+СтрДоб;
if bHTTPs then
//tcp.InitEncryption("LibreSSL","C:\LibreSSL255\libtls-15.dll");
tcp.InitEncryption("OpenSSL","C:\OpenSSL111e\libssl-1_1.dll");
endif;
tcp.HTTPSetOperation("GET "+СтрДоб+" HTTP/1.0");
tcp.HTTPSetHeaderField("Host",tcp.HTTPPunycodeEncode(URL));
tcp.HTTPSetHeaderField("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)");
tcp.HTTPSetHeaderField("Accept","text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
tcp.HTTPSetHeaderField("Accept-Language","en");
tcp.HTTPSetHeaderField("Connection","Close");
Стр:="";
Try
If tcp.HTTPSendAndReceive Then
Стр:=tcp.HTTPBodyAsString;
If _And(Pos(_NEWLINE,Стр)=0,Pos(Chr(10),Стр)>0) Then
Стр:=Replace(Стр,Chr(10),_NEWLINE);
EndIf;
EndIf;
Except
Message("Could not load: "+URL,"!");
EndTry;
Exit Стр;
EndFunction
s:=LoadPage("https://en.wikipedia.org/wiki/Main_Page");
Message(s);