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

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

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

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

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

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

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

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

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

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

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

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

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

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

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