• Модуль: messageservice
  • Путь к файлу: ~/bitrix/modules/messageservice/lib/sender/sms/ismscenter.php
  • Класс: BitrixMessageServiceSenderSmsISmsCenter
  • Вызов: ISmsCenter::sendHttpRequest
private function sendHttpRequest($path, $login, $psw, array $params): SenderResultHttpRequestResult
{
	$httpClient = new HttpClient([
		"socketTimeout" => $this->socketTimeout,
		"streamTimeout" => $this->streamTimeout,
		'waitResponse' => true,
	]);
	$httpClient->setCharset('UTF-8');
	$httpClient->setHeader('User-Agent', 'Bitrix24');
	$httpClient->setHeader('Content-Type', 'application/json');
	$httpClient->setAuthorization($login, $psw);

	$result = new SenderResultHttpRequestResult();
	$answer = [
		'error_code' => 500,
		'error_message' => 'Service error'
	];

	$method = HttpClient::HTTP_POST;
	$url = self::JSON_API_URL . $path;
	$body = Json::encode($params);

	if ($path === 'report')
	{
		$method = HttpClient::HTTP_GET;

		$url .= '?' . http_build_query($params);
		$body = null;
	}

	$result->setHttpRequest(new DTORequest([
		'method' => $method,
		'uri' => $url,
		'headers' => method_exists($httpClient, 'getRequestHeaders') ? $httpClient->getRequestHeaders()->toArray() : [],
		'body' => $params
	]));

	if ($httpClient->query($method, $url, $body))
	{
		try
		{
			$answer = Json::decode($httpClient->getResult());
		} catch (BitrixMainArgumentException $e)
		{
		}
	}

	if (isset($answer['error_code']))
	{
		$result->addError(new Error($answer['error_message'], $answer['error_code']));
	}

	$result->setHttpResponse(new DTOResponse([
		'statusCode' => $httpClient->getStatus(),
		'headers' => $httpClient->getHeaders()->toArray(),
		'body' => $httpClient->getResult(),
		'error' => SenderUtil::getHttpClientErrorString($httpClient)
	]));

	$result->setData($answer);

	return $result;
}