2

我有 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') 它返回我第一个方法

“外部缓存访问请求”

4

4 回答 4

0

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

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

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

于 2013-10-15T08:01:07.397 回答
0

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

看看我的答案:stackoverflow.com/a/51099774/6783224

于 2018-06-29T10:51:53.547 回答
-1

您的 Web 服务方法已重载,因此您应该按照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); 
于 2013-10-14T14:34:07.150 回答
-1

给定一个像这样的 SoapClient:

$serviceUrl = 'your service address';

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

您可以调用您的方法,如:

$client->PingRsp($parameters);

此致!

于 2013-10-14T14:24:45.890 回答