• Модуль: messageservice
  • Путь к файлу: ~/bitrix/modules/messageservice/lib/sender/sms/ednaruimhpx.php
  • Класс: BitrixMessageServiceSenderSmsEdnaruImHpx
  • Вызов: EdnaruImHpx::callExternalMethod
protected function callExternalMethod(string $body): SenderResultHttpRequestResult
{
	$httpClient = new HttpClient([
		"socketTimeout" => $this->socketTimeout,
		"streamTimeout" => $this->streamTimeout,
		'waitResponse' => true,
	]);
	$httpClient->setHeader('User-Agent', 'Bitrix24');
	$httpClient->setHeader('Content-type', 'text/xml');

	$result = new SenderResultHttpRequestResult();
	$result->setHttpRequest(new DTORequest([
		'method' => HttpClient::HTTP_POST,
		'uri' => $this->getServiceEndpoint(),
		'headers' => method_exists($httpClient, 'getRequestHeaders') ? $httpClient->getRequestHeaders()->toArray() : [],
		'body' => $body
	]));

	$body = Encoding::convertEncoding($body, SITE_CHARSET, 'utf-8');
	if (!$httpClient->query(HttpClient::HTTP_POST, $this->getServiceEndpoint(), $body))
	{
		$result->setHttpResponse(new DTOResponse([
			'error' => SenderUtil::getHttpClientErrorString($httpClient)
		]));
		$httpError = $httpClient->getError();
		$errorCode = array_key_first($httpError);
		$result->addError(new Error($httpError[$errorCode], $errorCode));
		return $result;
	}

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

	return $result;
}