2012-09-27 68 views
1

我是一名經驗豐富的PHP程序員,但實際上我對SOAP沒有任何線索。現在我必須使用它,因爲我的客戶需要自動生成DHL批次標籤。我需要一些簡單而有效的幫助。php soap空輸出

所以我送一個原始的XML請求,DHL,我從他們的樣本複製PROGRAMM消息,但我總是得到一個空的結果(沒有錯誤)。我的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,但也沒有結果(沒有錯誤)。

請幫助。

+0

你需要使用的NuSOAP?如果不是的話,如果你使用的是PHP 5,請嘗試使用PHP內置的soap函數(soap_client)..它有更好的錯誤報告,並且比nusoap更適合PHP 4 .. – raidenace

+0

@Raidenace:我該如何用PHP5發送一個原始的XML?我試過了,但它不起作用,因爲我不知道,我應該寫爲「位置」和「URI」。在我的問題中,你可以看到這兩個地址是什麼。但是命名空間呢? DHL文檔非常糟糕。 –

+0

我已經添加了一個針對您發佈的WDL的示例工作代碼的答案。檢查出來..希望它有幫助! – raidenace

回答

3

當使用soap_client你不需要通過原始XML。相反,您需要查看WSDL並確定要調用哪個Web服務功能以及它需要哪些參數。然後,通過傳遞wsdl url以及是否需要跟蹤來創建肥皂客戶端對象(它有助於調試和工作)。然後使用這個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 
     ) 

) 
+0

感謝您的時間。 –

+0

還有一個問題:如何發送我的XML請求? –

+0

您的意思是如何將請求提交給Web服務?如果您擁有web服務的wsdl,那麼您只需將其傳遞給soap_client即可。 soap_client會自動找出端點和所有其他來自正確的WSDL url的詳細信息 – raidenace

1

Web服務器是否以狀態200響應?你說你得到了一個空的答覆嗎?

使用這個免費的GUI工具(http://webservicestudio.codeplex.com/)使Web服務調用和可視化。您可以輕鬆加載WSDL並開始撥打電話。

通過工作2周的工作和學習的方式是好東西的人!保持。

+0

謝謝我會試試看。 –

+0

順便說一句,我最近看到一個帶有文字的T恤:「我會爲HTML編寫食物」,哈哈,我喜歡它。 –

+0

大聲笑。在這個意義上說窮人不太好。我的技能很差,所以不要接受我的建議。 LMAO! –