如何查看 PHP SOAP 客户端类生成的实际 XML?

2022-08-30 09:18:29

请考虑以下示例 SOAP 客户端脚本:

$SOAP = new SoapClient($WDSL); // Create a SOAP Client from a WSDL

// Build an array of data to send in the request.
$Data = array('Something'=>'Some String','SomeNumber'=>22); 

$Response = $SOAP->DoRemoteFunction($Data); // Send the request.

在最后一行,PHP 从您指定的数组中获取参数,并使用 WSDL 构建要发送的 XML 请求,然后发送它。

如何让 PHP 向我展示它构建的实际 XML?

我正在对应用程序进行故障排除,需要查看请求的实际 XML。


答案 1

使用 getLastRequest。它返回在上一个 SOAP 请求中发送的 XML。

echo "REQUEST:\n" . $SOAP->__getLastRequest() . "\n";

请记住,仅当 SoapClient 对象是在将选项设置为 的情况下创建的,此方法才有效。因此,在创建对象时,请使用以下代码:traceTRUE

$SOAP = new SoapClient($WDSL, array('trace' => 1));

答案 2
$SOAP = new SoapClient($WSDL, array('trace' => true));

$Response = $SOAP->DoRemoteFunction($Data);

echo "REQUEST:\n" . htmlentities($SOAP->__getLastRequest()) . "\n";

这不仅可以打印最后一个请求,还可以使 XML 标记在浏览器中可见。


推荐