我對PHP不太瞭解,但大約一個月前,我編寫了一個腳本來從SOAP Web服務中將事件數據顯示在數字標牌上。它已經工作了幾個星期,但最近爆發了。PHP:SoapClient不再按預期工作
下面是相關的PHP代碼...
$WSDL_URL = 'http://anprodca.active.com/uofg/servlet/ActiveNetWS?wsdl';
$params = array(
"ws_system_user" => $credentials,
"resource_ids" => array(intval($facilityID)),
"dates" => $date,
"include_linked_resources" => 0,
"returning_render_customer_id" => 0
);
$soap = new SoapClient($WSDL_URL);
$response = $soap->wsGetResourceBookings($params);
...與含有userName
,password
,和keepAlive
值在陣列$credentials
。
當我得到它時,我收到以下異常消息:looks like we got no XML document
。我已經在stackoverflow上看到類似的帖子,關於由於麻煩的隱形字符造成的格式錯誤的響應問題,但這不是這裏的情況。來自__getLastResponse()
的響應似乎是來自某種重定向的HTML?
我能仍然得到使用SOAPUI期望的結果。下面是它從WSDL URL產生的請求一起傳遞的XML的例子:
<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ANWebServices/">
<SOAP-ENV:Body>
<ns1:wsGetResourceBookings>
<ws_system_user>
<keepAlive>false</keepAlive>
<password>password</password>
<userName>username</userName>
</ws_system_user>
<resource_ids>
<entries>27</entries>
</resource_ids>
<dates>09/25/2016</dates>
<include_linked_resources>0</include_linked_resources>
<returning_render_customer_id>0</returning_render_customer_id>
</ns1:wsGetResourceBookings>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
使用跟蹤選項和__getLastRequest()
與SoapClient的,我得到了下面的XML,當經過這也工作得很好SOAPUI ...
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:anw="http://ANWebServices/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://ANWebServices/">
<soapenv:Header/>
<soapenv:Body>
<anw:wsGetResourceBookings>
<ws_system_user>
<keepAlive>false</keepAlive>
<password>password</password>
<userName>username</userName>
</ws_system_user>
<resource_ids>
<entries>27</entries>
</resource_ids>
<dates>09/25/2016</dates>
<include_linked_resources>0</include_linked_resources>
<returning_render_customer_id>0</returning_render_customer_id>
</anw:wsGetResourceBookings>
</soapenv:Body>
</soapenv:Envelope>
我認爲WSDL文件已經改變,但沒有改變。 沒有任何服務器端發生過變化,它仍然使用相同配置的PHP版本,等等。我嘗試禁用WSDL緩存以及NuSoap庫無濟於事。我似乎無法弄清楚爲什麼我不能使用SoapClient獲得正確的響應。任何有識之士將不勝感激,謝謝!
*「從__getLastResponse()的反應似乎是HTML從某種重定向」 * ...如果服務是給你一個突然的重定向我不知道你期望這裏的人幫助你。與運行它的人交談。也許他們已經限制了你稱之爲的IP地址,也許他們已經完全做了其他事情。 –
「如果服務突然給你一個重定向,我不確定你期望這裏的人能幫助你」......我想知道爲什麼我可以使用SOAPUI得到有效的XML響應,但不能SoapClient/PHP 「也許他們已經限制了你所稱的IP地址......」然後它不適用於SOAPUI – jkwill87
SOAPUI是一個客戶端應用程序 - 如果他們已經對你的服務器的IP地址(不清楚你是否從其他地方嘗試了SoapClient),它對它沒有任何影響。 –