簡體   English   中英

如何將參數插入Soap API-PHP Soap

[英]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.

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