• Модуль: 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;
}