Многие разработчики по привычке используют стандартные функции PHP curl_* для обращения к внешним сервисам.
Однако в Битрикс есть собственная мощная обертка — \Bitrix\Main\Web\HttpClient.
Она учитывает настройки прокси сервера (из .settings.php), корректно работает с кодировками и предоставляет удобный объектный интерфейс.
Базовый GET-запрос
use Bitrix\Main\Web\HttpClient;
$httpClient = new HttpClient();
// Настройки (опционально)
$httpClient->setCharset("UTF-8");
$httpClient->setHeader("User-Agent", "MyBitrixBot/1.0");
// Выполнение запроса
$url = "https://api.example.com/data?param=123";
$result = $httpClient->get($url);
if ($httpClient->getStatus() == 200) {
echo "Ответ сервера: " . $result;
} else {
echo "Ошибка: Код " . $httpClient->getStatus();
// Получить массив ошибок
print_r($httpClient->getError());
}POST-запрос с отправкой JSON
Это самый частый сценарий при работе с REST API.
use Bitrix\Main\Web\HttpClient;
use Bitrix\Main\Web\Json;
$httpClient = new HttpClient();
// Данные для отправки
$postData = [
'name' => 'Test Item',
'active' => true,
'price' => 1000
];
// Устанавливаем заголовки
$httpClient->setHeader('Content-Type', 'application/json');
$httpClient->setHeader('Authorization', 'Bearer MY_API_TOKEN');
// Конвертируем массив в JSON и отправляем
$response = $httpClient->post(
"https://api.example.com/create",
Json::encode($postData)
);
// Разбираем ответ
$result = Json::decode($response);
print_r($result);Тонкая настройка (опции)
Конструктор HttpClient принимает массив опций, который позволяет гибко настроить поведение.
$options = [
"redirect" => true, // Следовать за редиректами
"redirectMax" => 5, // Максимум 5 редиректов
"waitResponse" => true, // Ждать ответа (false для fire-and-forget)
"socketTimeout" => 10, // Тайм-аут соединения (сек)
"streamTimeout" => 30, // Тайм-аут чтения (сек)
"version" => "1.1", // Версия HTTP
"proxyHost" => "", // Если нужно задать прокси вручную
];
$httpClient = new HttpClient($options);Скачивание файла
HttpClient умеет сохранять ответ сразу в файл, что полезно для скачивания картинок или документов.
$httpClient = new HttpClient();
$httpClient->setOutputStream($_SERVER["DOCUMENT_ROOT"] . "/upload/downloaded_image.jpg");
$httpClient->get("https://example.com/image.jpg");Вывод:
Класс HttpClient — это стандарт для выполнения HTTP-запросов в экосистеме Битрикс. Он надежнее самописных cURL-оберток, так как интегрирован с настройками ядра и корректно обрабатывает низкоуровневые ошибки сети.
HttpClient, Битрикс HTTP запросы, замена curl, post запрос битрикс, get запрос d7, отправка json битрикс, внешний api.