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