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