Документация для разработчиков
Темная тема

Режим legacy

При создании объекта http-клиента можно передать в конструктор опции в виде массива (для большинства опций есть также сеттеры):

ОпцияТипОписание
redirect *boolСледовать переадресации (по умолчанию true – редирект).
redirectMax *intМаксимальное количество редиректов (по умолчанию 5).
waitResponseboolДождаться ответа или отключиться сразу после запроса (по умолчанию true – ожидание ответа).
socketTimeoutintТаймаут соединения в секундах (по умолчанию 30).
streamTimeoutintТаймаут потока в секундах (по умолчанию 60).
version *stringВерсия HTTP (HttpClient::HTTP_1_0, HttpClient::HTTP_1_1) (по умолчанию "1.0").
proxyHoststringИмя\адрес прокси сервера.
proxyPortintПорт прокси сервера.
proxyUserstringИмя пользователя прокси сервера.
proxyPasswordstringПароль прокси сервера.
compressboolИспользовать сжатие gzip (по умолчанию false).
charsetstringКодировка для содержимого POST и PUT запросов.
disableSslVerificationboolЕсли установлено true, то верификация ssl-сертификатов производиться не будет.
bodyLengthMaxintМаксимальная длина запроса.
privateIpboolВключить запросы к частным IP-адресам (по умолчанию true – включить).
debugLevelintУровень отладки с использованием констант HttpDebug::*.
cookies *arrayМассив файлов cookie для HTTP-запроса.
headers *arrayМассив заголовков для HTTP-запроса.
useCurlboolВключить использование библиотеки CURL (по умолчанию false).
curlLogFilestringПолный путь к файлу с логами CURL.

* – опции, работающие только в legacy-режиме.


Значения опций по умолчанию на конкретном проекте можно установить в settings.php:

return [
	// ...
	"http_client_options" => [
		"value" => [
			"socketTimeout" => 20,
			"streamTimeout" => 20,
			"useCurl" => true,
		],
	]
	// ...
];

Доступные основные методы:

Простейший пример использования:

use Bitrix\Main\Web\HttpClient;
	
$http = new HttpClient([
	'compress' => true,
	'headers' => [
		'User-Agent' => 'bitrix',
	],
]);
	
$result = $http->get('https://1c-bitrix.ru/');
	
if ($result !== false)
{
	var_dump($http->getStatus());
	var_dump($http->getHeaders());
}
else
{
	var_dump($http->getError());
}

Клиент сам выполнит редирект и распакует ответ.

В main 23.300.0 появилась возможность динамически, в отличие от опции waitResponse, определять через callback-функцию shouldFetchBody, нужно ли выкачивать тело ответа. В параметры callback-функции приходит объект ответа с заголовками и объект запроса:

use Bitrix\Main\Web\HttpClient;
use Bitrix\Main\Web\Http\Response;
use Psr\Http\Message\RequestInterface; 
	
$http = new HttpClient();
	
$http->shouldFetchBody(function (Response $response, RequestInterface $request) {
	var_dump($request->getHeaders());
	return ($response->getHeadersCollection()->getContentType() === 'text/html');
});
	
$result = $http->get('https://www.1c-bitrix.ru/');
var_dump($result);


© «Битрикс», 2001-2024, «1С-Битрикс», 2024