Блог Горошко Андрея 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.

Мой рейтинг:

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

Related Post

Гибкая выборка в D7 ORM: Мастер-класс по классу QueryГибкая выборка в D7 ORM: Мастер-класс по классу Query

Средний рейтинг Еще нет оценок Хотя статический метод ::getList() удобен для простых выборок, его возможности ограничены, когда условия запроса нужно формировать динамически. Для таких задач в D7 ORM существует специальный класс-конструктор — \Bitrix\Main\Entity\Query.

События в D7 ORM: OnBeforeAdd, OnAfterUpdate и другие. Полный контроль над даннымиСобытия в D7 ORM: OnBeforeAdd, OnAfterUpdate и другие. Полный контроль над данными

Средний рейтинг Еще нет оценок D7 ORM предоставляет мощный механизм событий, который позволяет вмешиваться в процесс сохранения, обновления или удаления данных. Это правильный способ добавить бизнес-логику (например, проверку, отправку уведомлений,

Взаимодействие компонентов на одной странице: Фильтр и КаталогВзаимодействие компонентов на одной странице: Фильтр и Каталог

Средний рейтинг Еще нет оценок Очень часто на странице нужно разместить несколько компонентов, которые должны работать вместе. Самый яркий пример — страница каталога, где есть компонент «Умный фильтр» и компонент