加入 htmlentities() 會很有幫助,因為它可以讓 XML 直接在瀏覽器中顯示,而無需查看原始碼。
<?php
echo "請求:\n" . htmlentities($client->__getLastRequest()) . "\n";
?>
(PHP 5, PHP 7, PHP 8)
SoapClient::__getLastRequest — 返回最後一個 SOAP 請求
此函式沒有參數。
最後一次 SOAP 請求,以 XML 字串形式返回。
範例 #1 SoapClient::__getLastRequest() 範例
<?php
$client = new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo "請求:\n" . $client->__getLastRequest() . "\n";
?>
加入 htmlentities() 會很有幫助,因為它可以讓 XML 直接在瀏覽器中顯示,而無需查看原始碼。
<?php
echo "請求:\n" . htmlentities($client->__getLastRequest()) . "\n";
?>
請注意,當您建立 SoapClient 時,如果將 "trace" 選項設定為 FALSE 或省略它,則 "__getLastRequest()" 永遠會返回 NULL。
我猜很多人呼叫 getLastRequest 後卻沒有任何回傳值。「我的最後一次請求在哪裡?」。現在我們將看到我們的請求,當您建立 SoapClient 實例時,您應該提供一個選項參數,如下所示
<?php
// 下方 $option=array('trace',1);
// 正確的寫法如下
$option=array('trace'=>1);
$client=new SoapClient('some.wsdl',$option);
try{
$client->aMethodAtRemote();
}catch(SoapFault $fault){
// <xmp> 標籤會在 html 中顯示 xml 輸出
echo '請求 : <br/><xmp>',
$client->__getLastRequest(),
'</xmp><br/><br/> 錯誤訊息 : <br/>',
$fault->getMessage();
}
?>
參數 "trace" 可以輸出請求。現在,您應該可以看到 SOAP 請求了。
只是為了讓它更易讀
echo "請求:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "\n";
echo "回應:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "\n";
備註:如果您使用 \n,則需要將上述語句括在 <pre> 中。您也可以使用 <br />,但它會變得有點雜亂。