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

HttpClient

HttpClient – класс для работы с HTTP. Класс работает через сокеты. Класс принимает опции по умолчанию из настроек конфигурации http_client_options файла /bitrix/.settings.php.

С версии main 23.0.0 в HttpClient добавлена поддержка PSR-18. Помимо PSR, клиент работает в legacy-режиме, поддерживает очереди асинхронных запросов и библиотеку CURL.

Метод Описание С версии
disableSslVerification Метод запрещает верификацию ssl сертификата. 15.5.9
download Метод скачивает и сохраняет файлы.
get Метод выполняет GET запрос.
getCharset Метод возвращает кодировку контента ответа.
getContentType Метод возвращает тип контента ответа.
getCookies Метод возвращает отпарсенный HTTP ответ cookies
getEffectiveUrl Метод возвращает URL последнего редиректа или первначалный URL.
getError Метод возвращает массив ошибок при неудаче
getHeaders Метод возвращает отпарсенные заголовки HTTP ответов.
getResult Метод возвращает строку сущности HTTP ответа.
getStatus Метод возвращает код статуса HTTP ответа.
head Метод выполняет HEAD запрос.
post Метод выполняет POST запрос.
query Метод выполняет HTTP запрос.
setAuthorization Метод устанавливает поле заголовка запроса аутентификации.
setCharset Метод устанавливает кодировку для тела объекта
setCompress Метод устанавливает опции компрессии.
setCookies Метод устанавливает массив cookies для HTTP запроса
setHeader Метод устанавливает поле заголовка HTTP запроса.
setOutputStream Метод устанавливает вывод ответа в поток вместо строкового результата.
setProxy Метод устанавливает HTTP прокси для запроса.
setRedirect Метод устанавливает опции редиректа.
setStreamTimeout Метод устанавливает поток сокетов для чтения таймаута.
setVersion Метод устанавливает версию HTTP протокола.
waitResponse Метод устанавливает опцию ожидания ответа.
destruct Метод закрывает соединение при уничтожении объекта.
Конструктор Метод создаёт новый объект класса.
setTimeout Метод устанавливает таймаут соединения.

Примеры

Пример настройки:

'http_client_options' =>
	array (
		'value' =>
			array (
				'redirect' => true,//делаем редиректы, если требуется
				'redirectMax' => 10,//но не более 10
				'version' => '1.1'//работаем по протоколу http 1.1
			),
		'readonly' => false,
	),

Правильность настроек, можно проверить так (должен быть выведен ваш массив):

use Bitrix\Main\Config\Configuration;
print_r(Configuration::getValue("http_client_options"));

use Bitrix\Main\Web\HttpClient;

$httpClient = new HttpClient();
$httpClient->setHeader('Content-Type', 'application/json', true);
$response = $httpClient->post('http://www.example.com', json_encode(array('x' => 1)));

use Bitrix\Main\Web\HttpClient;

$httpClient = new HttpClient();
$httpClient->download('http://www.example.com/robots.txt', $_SERVER['DOCUMENT_ROOT'].'/upload/my.txt');

use Bitrix\Main\Web\HttpClient; 
$url = "http://www.example.com"; // отсюда возьмется кука
$url2 = "http://www.example.com/form_request"; // адрес, куда посылать запрос
$post = "val1=true&val2=false"; // запрос строкой, либо массивом

$httpClient = new HttpClient(); 
$httpClient->query("GET", $url);
$cookie = $httpClient->getCookies()->toArray(); // Кука отдаются объектом -> впихнем ее в массив. 

echo "<pre>"; print_r($cookie); echo "</pre>";

$httpClient->setHeader('Content-Type','application/x-www-form-urlencoded'); 
$httpClient->setCookies($cookie); // Аргумент должен быть массивом!
$response = $httpClient->post($url2, $post);

echo "<pre>"; var_dump($response); echo "</pre>";


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