Я создал 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);