带有参数的PHP SOAP客户端调用函数

时间:2012-08-10 10:22:55

标签: php soap

我创建了一个像这样的SOAP客户端:

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

然后当我想调用API函数时

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

我收到以下错误:

  

格式化程序在尝试反序列化消息时抛出异常:

     

反序列化操作“Authenticate”的请求消息正文时出错。   预期名称空间为“http://schemas.xmlsoap.org/soap/envelope/”的结束元素“正文”。   从命名空间''找到元素'param1'。

但是当我尝试在数组中传递参数时,它可以工作,但我得到了下一个错误:

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

我的问题是:如何将PHP中的参数传递给SOAP客户端?他们必须在阵列中吗?

4 个答案:

答案 0 :(得分:10)

你应该为参数传递一个数组并给出你的参数名称(可以在wsdl文件中找到)。在您的情况下,结果应如下所示(假设参数名称应为param1param2基于错误消息):

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

答案 1 :(得分:2)

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

答案 2 :(得分:0)

这一切都取决于soap服务器如何定义,参数可以是你喜欢的字符串和数组。你的问题以前不合法,检查wsdl文件或so​​ap服务器。

答案 3 :(得分:0)

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