糟糕!
該範例需要
$soapClient = new SoapClient($url, array('trace'=>1));
才能開啟追蹤功能。
(PHP 5, PHP 7, PHP 8)
SoapClient::__getLastResponse — 返回最後一個 SOAP 回應
此函式沒有參數。
最後一個 SOAP 回應,以 XML 字串形式返回。
範例 #1 SoapClient::__getLastResponse() 範例
<?php
$client = new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "回應:\n" . $client->__getLastResponse() . "\n";
?>
您幾乎肯定需要在 SOAP 呼叫周圍加上 try/catch 區塊,才能使用這些來除錯無法正常運作的程式碼。
否則,PHP 會在您執行此函式之前拋出致命錯誤。
例如
<?php
$soapClient = new SoapClient($url);
echo htmlentities($soapClient->__getFunctions());
//假設已輸出 'someFunction' (以及其他函式)
try {
$results = $soapClient->someFunction(...);
}
catch (SoapFault $soapFault) {
var_dump($soapFault);
echo "請求 :<br>", htmlentities($soapClient->__getLastRequest()), "<br>";
echo "回應 :<br>", htmlentities($soapClient->__getLastResponse()), "<br>";
}
?>
如果沒有 try/catch,您只會收到致命錯誤,而 PHP 會在您呼叫 __getLastRequest/__getLastResponse 之前自行終止。
讓程式碼更易讀一些:
echo "請求:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "\n";
echo "回應:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "\n";
備註:如果您使用 \n 換行符號,則需要將上述語句用 <pre> 標籤包起來。您也可以使用 <br />,但這樣會有點雜亂。