Блог Горошко Андрея 1C-Битрикс Bitrix\Main\Web\HttpClient: Правильная отправка GET и POST запросов (замена cURL)

Bitrix\Main\Web\HttpClient: Правильная отправка GET и POST запросов (замена cURL)

Многие разработчики по привычке используют стандартные функции 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.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Добавить комментарий

Related Post

Создание дилерского портала с системой бронирования производственных слотовСоздание дилерского портала с системой бронирования производственных слотов

Разработка и внедрение профессионального B2B-портала и дилерского кабинета на 1С-Битрикс позволяет кардинально сократить издержки отдела оптовых продаж, перевести дилеров на самообслуживание 24/7 и исключить ошибки ручного ввода заказов. Услуга «Создание

Стоимость перевода сайта на протокол HTTPS и настройки сертификата безопасностиСтоимость перевода сайта на протокол HTTPS и настройки сертификата безопасности

Прозрачный расчет бюджета, честные сметы и понимание совокупной стоимости владения (TCO) — залог успешного сотрудничества и окупаемости инвестиций в веб-разработку на 1С-Битрикс. В статье «Стоимость перевода сайта на протокол HTTPS

Удалить склад catalog.store.deleteУдалить склад catalog.store.delete

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Удалить склад catalog.store.delete». Вы узнаете экспертные методики работы с catalog.store.delete и научитесь избегать