- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/helpers/rest/http.php
- Класс: BitrixSaleHelpersRestHttp
- Вызов: Http::sendRequest
static function sendRequest(string $url, array $params, array $options = []): SaleResult
{
$result = new SaleResult();
$httpClientOptions = [];
if (array_key_exists('HTTP_CLIENT_OPTIONS', $options) && is_array($options['HTTP_CLIENT_OPTIONS']))
{
$httpClientOptions = $options['HTTP_CLIENT_OPTIONS'];
}
$httpClient = new HttpClient($httpClientOptions);
$isJsonRequest = isset($options['JSON_REQUEST']) && $options['JSON_REQUEST'] === true;
if ($isJsonRequest)
{
$httpClient->setHeader('Content-Type', 'application/json');
}
$response = $httpClient->post(
$url,
$isJsonRequest ? Json::encode($params) : $params
);
if ($response === false)
{
$errors = $httpClient->getError();
foreach ($errors as $code => $message)
{
$result->addError(new MainError($message, $code));
}
return $result;
}
$httpStatus = $httpClient->getStatus();
if ($httpStatus === 200)
{
try
{
$response = Json::decode($response);
$response = array_change_key_case($response, CASE_UPPER);
$response = MainTextEncoding::convertEncoding($response, 'UTF-8', LANG_CHARSET);
}
catch (MainArgumentException $exception)
{
$response = [];
$result->addError(
new MainError('Response decoding error', 'RESPONSE_DECODING_ERROR')
);
}
$result->setData($response);
}
return $result;
}