PHP SOAP WSDL如何使用相同的方法名称调用soap操作

时间:2013-10-14 14:17:34

标签: php soap wsdl

我有WSDL,它返回下面包含的功能列表

[0] => ExternalCacheAccessRsp service(ExternalCacheAccessReq $parameters)
[1] => PingRsp service(PingReq $parameters)
[2] => SystemInfoRsp service(SystemInfoReq $parameters)
[3] => TimeRsp service(TimeReq $parameters)

如何通过

调用PingReq函数
  

__的SOAPCall()

当我试图调用__soapCall('service')时,它会返回第一个方法

  

“ExternalCacheAccessReq”

4 个答案:

答案 0 :(得分:0)

感谢您的回答,但这两种解决方案都不正确。

在第一种情况下,Soap返回我没有传递属性“CacheName”,这是“ExternalCacheAccessRsp”必需的(第一种方法)。

在第二个解决方案中,我发出消息称“PingRsp”方法无效。有效的方法是“服务”,但正如您在顶部看到的,所有方法都有名称“service”。

答案 1 :(得分:0)

唯一的方法是手动编写XML请求并通过方法SoapClient::__doRequest发送。

在这里查看我的答案:stackoverflow.com/a/51099774/6783224

答案 2 :(得分:-1)

给定SoapClient,如:

$serviceUrl = 'your service address';

$client = new SoapClient($serviceUrl, array(
    'trace' => true, 
    'soap_version' => SOAP_1_2, 
    'encoding' => 'UTF-8')
);

您可以将您的方法称为:

$client->PingRsp($parameters);

祝你好运!

答案 3 :(得分:-1)

您的网络服务方法已超载,因此您应设置PingReq指定的输入参数。服务器可以区分您想要的过载的唯一方法是输入参数的格式和结构。您可以检查WSDL以查看PingReq的结构是什么。

$client = new SoapClient('http://wsdl'); // <-- enter your wsdl url

// set $params as defined by your WSDL for the `PingReq` structure.
$params = array(
    'param1' => 'one',
    'param2' => 'two'
);

$response = $client->service($params);