添加htmlentities()可能会有帮助,因为它使XML在您的浏览器中可见,而无需查看源代码。
<?php
echo "REQUEST:\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 "REQUEST:\n" . $client->__getLastRequest() . "\n";
?>
添加htmlentities()可能会有帮助,因为它使XML在您的浏览器中可见,而无需查看源代码。
<?php
echo "REQUEST:\n" . htmlentities($client->__getLastRequest()) . "\n";
?>
请注意,当您使用"trace"选项设置为FALSE或省略该选项创建SoapClient时,"__getLastRequest()"始终返回NULL。
我猜很多人调用getLastRequest,但它什么也没有返回。"嘿,我的最后一个请求在哪里"。现在我们将看到我们的请求,当您创建一个SoapClient实例时,您应该提供如下所示的选项参数
<?php
// below $option=array('trace',1);
// 正确的写法如下
$option=array('trace'=>1);
$client=new SoapClient('some.wsdl',$option);
try{
$client->aMethodAtRemote();
}catch(SoapFault $fault){
// <xmp> 标签在html中显示xml输出
echo 'Request : <br/><xmp>',
$client->__getLastRequest(),
'</xmp><br/><br/> Error Message : <br/>',
$fault->getMessage();
}
?>
"trace"参数启用请求输出。现在,您应该看到SOAP请求。
为了使其更易于阅读
echo "REQUEST:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "\n";
echo "Response:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "\n";
附注:如果您使用 \n,则需要将以上语句括在<pre>中。您也可以使用<br />,但这会有点混乱。