簡體   English   中英

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

[英]PHP SOAP WSDL How to call soap action with the same method name

我有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”

感謝您的回答,但兩種解決方案在這種情況下都不正確。

在第一種情況下,Soap返回我沒有傳遞“ ExternalCacheAccessRsp”(第一個方法)必需的屬性“ CacheName”。

在第二個解決方案中,我收到一條消息,指出“ PingRsp”方法無效。 有效的方法是“服務”,但是如您在頂部看到的那樣,所有方法的名稱都為“服務”。

唯一的方法是手動編寫XML請求,並通過SoapClient::__doRequest方法發送。

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

給定一個SoapClient像:

$serviceUrl = 'your service address';

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

您可以像這樣調用您的方法:

$client->PingRsp($parameters);

最好的祝福!

您的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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM