[英]php soap empty output
我是一名經驗豐富的PHP程序員,但我實際上並不知道SOAP。 現在我必須使用它,因為我的客戶需要自動生成DHL批處理標簽。 我需要一些簡單而有效的幫助。
所以我向DHL發送了一個原始XML請求,我已經從他們的示例程序中復制了該消息,但我總是得到一個空結果(沒有錯誤)。 我的PHP代碼如下:
require_once('nusoap/lib/nusoap.php'); $endpoint = "https://test-intraship.dhl.com/intraship.57/jsp/Login_WS.jsp"; $client = new nusoap_client($endpoint, false); $msg = $client->serializeEnvelope(" <soap:Envelope xmlns:soap=\"http://www.w3.org/2003/05/soap-envelope\" xmlns:cis=\"http://dhl.de/webservice/cisbase\" xmlns:de=\"http://de.ws.intraship\"> <soap:Header> <cis:Authentification><cis:user>bzalewski</cis:user> (...) "); $result=$client->send($msg, $endpoint); echo $result;
如上所述,消息只是被復制,所以一定是好的。 我嘗試了另一個端點: http : //test-intraship.dhl.com/ws/1_0/ISService/DE.wsdl ,但也沒有結果(沒有錯誤)。
請幫忙。
使用soap_client
您不需要傳遞原始XML
。 相反,您查看WSDL
並確定要調用哪個Web服務函數,以及它需要哪些參數。 然后通過傳遞wsdl url以及是否要跟蹤來創建一個soap客戶端對象(它有助於調試和填充)。 然后使用此soap客戶端對象來調用要調用的任何Web服務函數。 如果函數調用需要參數,請將它們作為數組傳遞。 我在下面發布了一個示例代碼,該代碼使用您提供的WSDL
並調用其getVersion
函數。 請注意,此函數不需要參數,因此我沒有傳遞任何內容。 希望這有助於您入門..
<?
$client = new SoapClient('http://test-intraship.dhl.com/ws/1_0/ISService/DE.wsdl', array('trace' => 1));
$res = $client->getVersion();
print_r($res);
?>
這將從DHL Web服務返回以下值:
stdClass Object
(
[Version] => stdClass Object
(
[majorRelease] => 1
[minorRelease] => 0
[build] => 14
)
)
Web服務器是否以狀態200響應? 你說你得到一個空洞的回答吧?
使用這個免費的GUI工具(http://webservicestudio.codeplex.com/)進行Web服務調用和可視化。 您可以輕松加載WSDL並開始撥打電話。
順便說一下,工作2個工作和學習是好東西! 保持。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.