Режим legacy
При создании объекта http-клиента можно передать в конструктор опции в виде массива (для большинства опций есть также сеттеры):
Опция | Тип | Описание |
---|---|---|
redirect * | bool | Следовать переадресации (по умолчанию true – редирект). |
redirectMax * | int | Максимальное количество редиректов (по умолчанию 5 ). |
waitResponse | bool | Дождаться ответа или отключиться сразу после запроса (по умолчанию true – ожидание ответа). |
socketTimeout | int | Таймаут соединения в секундах (по умолчанию 30 ). |
streamTimeout | int | Таймаут потока в секундах (по умолчанию 60 ). |
version * | string | Версия HTTP (HttpClient::HTTP_1_0, HttpClient::HTTP_1_1) (по умолчанию "1.0" ). |
proxyHost | string | Имя\адрес прокси сервера. |
proxyPort | int | Порт прокси сервера. |
proxyUser | string | Имя пользователя прокси сервера. |
proxyPassword | string | Пароль прокси сервера. |
compress | bool | Использовать сжатие gzip (по умолчанию false ). |
charset | string | Кодировка для содержимого POST и PUT запросов. |
disableSslVerification | bool | Если установлено true , то верификация ssl-сертификатов производиться не будет. |
bodyLengthMax | int | Максимальная длина запроса. |
privateIp | bool | Включить запросы к частным IP-адресам (по умолчанию true – включить). |
debugLevel | int | Уровень отладки с использованием констант HttpDebug::* . |
cookies * | array | Массив файлов cookie для HTTP-запроса. |
headers * | array | Массив заголовков для HTTP-запроса. |
useCurl | bool | Включить использование библиотеки CURL (по умолчанию false ). |
curlLogFile | string | Полный путь к файлу с логами 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