Функция вызова 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"));
все зависит от того,как сервер soap определяет, параметры могут быть строкой и массивом, как вам нравится.ваша проблема не является законной ранее, проверьте файл wsdl или сервер soap.
$client = new SoapClient("your wsdl file");
$stock = "NCR";
$parameters= array("request"=>$stock);
$values = $client->someMethod($parameters);