Коллеги, подскажите, пожалуйста, надо в качестве одного из параметром SOAP запроса (метод getTariff) передать xml.
Все методы, включая авторизацию и получение словаря отрабатывают на ура (все параметры запроса - строки), а вот с getTariff проблема. Подскажите, как быть с xml параметром, как его правильно передавать?
При выполнении запроса с SOAP действием: getTariff следующий ответ:
[ErrorCode] => -20001
[ErrorMessage] => Пустой XML файл в преобразовании.
Рабочий код класса, которые используется для запросов к веб сервису.
class IngosApi {
public $soapClient;
public $token;
// сразу авторизуемся и получаем токен с помощью запроса Login
public function __construct($apiUser, $apiPassword, $soapWsdlUri)
{
$this->soapClient = new SoapClient($soapWsdlUri, array('trace' => true, 'encoding'=>'UTF-8'));
$requestData = [
'User' => $apiUser,
'Password' => $apiPassword
];
$response = $this->soapClient->Login($requestData);
$this->token = $response->ResponseData->SessionToken;
}
// set on cron (every day 05:00)
// получаем словарь с помощью запроса getDicty
public function getDicty()
{
$requestData = [
'SessionToken' => $this->token,
'Product' => 753518300
];
$response = $this->soapClient->GetDicti($requestData);
$dictionary = $response->ResponseData->any;
file_put_contents('dictionaty.xml', $dictionary);
// insert data шт DB
}
public function getTariff()
{
$requestData = [
'SessionToken' => $this->token,
// пока тестируем, получаем просто из файла запрос
'TariffParameters' => file_get_contents('agreement-test.xml'),
'NeedList' => 1
];
$response = $this->soapClient->GetTariff($requestData);
$this->printPre($response);
}
public function getSoapClient()
{
return $this->soapClient;
}
public function getLastRequestXml()
{
return $this->soapClient->__getLastRequest();
}
public function getLastResponseXml()
{
return $this->soapClient->__getLastResponse();
}
// delete before production
public function printPre($var) {
echo '<pre>';
print_r($var);
echo '</pre>';
}
}