[英]how to insert params to soap api - php soap
我想連接API-發送請求並獲取數據。
首先,我獲得所有可用的功能:
$client = new SoapClient('https://website.com/api.asmx?wsdl');
print_r($client->__getFunctions());
然后顯示數組,如下所示:
[0] => CheckExampleResponse CheckExample(CheckExample $parameters)
因此,我必須使用這種方式:
$client->CheckExample($params);
但是,我不知道如何發送此XML:
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xs="XmlServices">
<soapenv:Header/>
<soapenv:Body>
<xs:GetExample>
<xs:request>
<xs:Credentials>
<xs:UserName>?</xs:UserName>
<xs:Password>?</xs:Password>
<xs:PostlId>?</xs:HotelId>
</xs:Credentials>
<xs:DataTest>2015-01-01T00:00:00</xs:DataTest>
<xs:DataTest2>2015-01-02T23:59:59</xs:DataTest2>
<xs:StatusTest>publish</xs:StatusTest>
</xs:request>
</xs:GetExample>
</soapenv:Body>
</soapenv:Envelope>
當我將此XML字符串作為參數傳遞給CheckExample
,出現以下錯誤:“請求參數不能為null。”
謝謝。
GetExample方法也應出現在__getFunctions調用中。 然后這應該工作:
<?php
$client = new SoapClient('https://website.com/api.asmx?wsdl');
$soapmessage = [
'request' => [
'Credentials' => [
'UserName' => '?',
'Password' => '?',
'PostlId' => '?'
],
'DataTest' => '2015-01-01T00:00:00',
'DataTest2' => '2015-01-02T23:59:59',
]
];
$result = $client->GetExample($soapmessage);
print_r($result);
當您將SOAP函數作為SoapClient
的方法調用時,您實際上是在調用SoapClient::__soapCall()
函數,並將函數名稱作為第一個參數傳遞。 因此,最好了解此函數的參數。
您可以看到要傳遞參數,需要傳遞一個數組。 這必須符合SOAP服務器的期望。 詳細信息可以在WSDL中找到,而對SoapClient::__getFunctions()
的調用不會顯示這些詳細信息。 如果您不想閱讀WSDL,則SOAP服務提供者還應該提供API文檔來確定適當的值。
值得記住的是,即使SOAP函數不需要任何參數,也必須將空數組傳遞給PHP函數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.