添加 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);
// correct one is below
$option=array('trace'=>1);
$client=new SoapClient('some.wsdl',$option);
try{
$client->aMethodAtRemote();
}catch(SoapFault $fault){
// <xmp> tag displays xml output in html
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";
PS:如果您使用 \n,则需要将上述语句放在 <pre> 中。您也可以使用 <br />,但它会有点乱。