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