Функция вызова PHP SOAP client с параметрами

Я создал SOAP-клиент так:

$client = new SoapClient("file.wsdl");

а затем, когда я хочу вызвать функцию API

$client->Authenticate("user", "password");

Я получаю следующую ошибку:

форматер вызвал исключение при попытке десериализовать сообщение:

ошибка десериализации тела сообщения запроса для операции "аутентификация". Конечный элемент 'Body' из пространства имен'http://schemas.xmlsoap.org/soap/envelope/ ' ожидается. Найденный элемент 'param1' из пространства имен ".

но когда я пытаюсь передать параметры в массив, он работает, но я получаю следующую ошибку:

["errorMessage"]=>
string(35) "ORA-01008: not all variables bound

мой вопрос: Как я могу передать параметры в PHP клиенту SOAP? Они должны быть в массиве?

4 ответов


вы должны передать массив для параметров и дать имена параметров (их можно найти в WSDL-файле). в вашем случае результат должен выглядеть так (при условии, что имена параметров должны быть param1 и param2 на основании сообщения об ошибке):

$client->Authenticate(array('param1'=>"user", 'param2'=>"password"));

$info = $client->__call("myAction", ['body' => ['param1' => '123', 'param2' => '456']]);

все зависит от того,как сервер soap определяет, параметры могут быть строкой и массивом, как вам нравится.ваша проблема не является законной ранее, проверьте файл wsdl или сервер soap.


   $client = new SoapClient("your wsdl file");
   $stock = "NCR";
   $parameters= array("request"=>$stock);
   $values = $client->someMethod($parameters);