簡體   English   中英

PHP&SoapClient:SOAP請求中缺少參數

[英]PHP & SoapClient: parameters missing from SOAP request

我正在嘗試解決SoapClient似乎沒有將參數插入SOAP請求的問題。

如果Web服務在與網站相同的服務器上運行,則簡單測試失敗,該服務在Windows 8 Server和IIS 7.1上為PHP 5.3.13。 兩天前,它一直在工作,但現在卻失敗了。 除更新外,我不知道對服務器安裝的任何更改。

    function simpleTest(){

    $client = new SoapClient("http://server-sql:78/PCIWCTest/Service1.svc?wsdl", array( "trace" => 1 ));

    $result = $client->__soapCall("GetData",
    array('GetData'=> array('parameters'=> 'Hello')),
    array('soapaction' => 'http://server-sql:78/PCIWCTest/GetData'));

    $requXML = $client->__getLastRequest();
    $respXML = $client->__getLastResponse();

    debug($requXML);
    debug($respXML);
}

結果請求($ requXML)為:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://tempuri.org/"><SOAP-ENV:Body><ns1:GetData/></SOAP-ENV:Body></SOAP-ENV:Envelope>

我假設之間應該有字符串“ Hello”

<SOAP-ENV:Body><ns1:GetData/></SOAP-ENV:Body>    

標簽,對不對?

在故障排除期間,我一直在使用許多不同的方法,例如soap __call,結果相同。 服務器已重新啟動。 我已經嘗試了所有可以想到的嘗試。

有人以前見過這個嗎?

在這種情況下,我發現我發送的參數的名稱與Web服務代碼中的參數不完全相同。 通過更改以上內容:

array('GetData'=> array('parameters'=> 'Hello')),

至:

array('GetData'=> array('value'=> 'Hello')),

呼叫正常工作,並且該參數不再為空! 我不知道這種行為是否是這種情況所獨有的,但是根據我有限的經驗,我還沒有看到在另一端命名該參數很重要的情況。

無論如何,問題得到了解決。 希望這對某人有幫助!

暫無
暫無

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

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