2014-02-08 48 views
1

我正在瀏覽關於webservices和SOAP的教程。在學習這些知識時,我創建了一個php文件,以便根據w3school提供的WSDL來轉換攝氏溫度和華氏溫度之間的溫度。PHP SoapClient __getLastRequest和__getLastRequestHeaders成功調用返回NULL

我寫了成功觸發下面的PHP代碼:

$wsdl = "http://www.w3schools.com/webservices/tempconvert.asmx?WSDL"; 
$soapClient = new SoapClient($wsdl); 

// print_r ($soapClient->__getFunctions()); 
// print_r ($soapClient->__getTypes()); 

$parameters = array("Celsius" => "0"); 

$result = $soapClient->__soapCall("CelsiusToFahrenheit", array($parameters)); 


echo "key: " . key($result) . "<br />" ; 
echo "value: " . current($result) . "<br />" ; 

瀏覽器成功返回以下內容:

key: CelsiusToFahrenheitResult 
value: 32 

然後我試圖使用SoapClient的方法__getLastRequest()__getLastRequestHeaders()看看在發送的頭文件中,看看它們與我閱讀的內容相比如何,並且這兩種方法調用都返回null

echo "Last call headers: <br />"; 
echo $soapClient->__getLastRequestHeaders(); 
echo "<br />" ; 
echo "Last call headers: <br />"; 
echo $soapClient->__getLastRequest(); 

我回顧了php manual for _getLastRequestHeaders()中的註釋和示例,它看起來像一切都設置正確。我不知道我做錯了什麼:/

任何幫助,將不勝感激!

回答

5

如果您在SoapClient的構造函數的options參數中未將trace設置爲true,則不會存儲這些參數。所以,簡單地說,這會爲你工作:

$soapClient = new SoapClient($wsdl, array('trace' => true)); 

...您鏈接的手冊明確規定:

注:

此功能僅適用如果SoapClient的對象是使用跟蹤選項設置爲TRUE創建的。

+0

啊,謝謝。我一定忽略了這一點。 –

相關問題