PHP Conference Japan 2024

SoapClient::__getLastRequest

(PHP 5, PHP 7, PHP 8)

SoapClient::__getLastRequest返回最后的SOAP请求

描述

public SoapClient::__getLastRequest(): ?string

返回最后SOAP请求中发送的XML。

注意:

此方法仅在SoapClient对象使用trace选项设置为true时才有效。

参数

此函数没有参数。

返回值

最后的SOAP请求,作为XML字符串。

示例

示例 #1 SoapClient::__getLastRequest() 示例

<?php
$client
= new SoapClient("some.wsdl", array('trace' => 1));
$result = $client->SomeFunction();
echo
"REQUEST:\n" . $client->__getLastRequest() . "\n";
?>

参见

添加注释

用户贡献的注释 5 条注释

匿名
14年前
添加htmlentities()可能会有帮助,因为它使XML在您的浏览器中可见,而无需查看源代码。

<?php

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

?>
hejdavladislav at gmail dot com
8年前
请注意,当您使用"trace"选项设置为FALSE或省略该选项创建SoapClient时,"__getLastRequest()"始终返回NULL。
Ersin DOGAN
15年前
我猜很多人调用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请求。
mayurvirkar at gmail dot com
11年前
为了使其更易于阅读

echo "REQUEST:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastRequest())) . "\n";
echo "Response:\n" . htmlentities(str_ireplace('><', ">\n<", $client->__getLastResponse())) . "\n";

附注:如果您使用 \n,则需要将以上语句括在<pre>中。您也可以使用<br />,但这会有点混乱。
LZhang
10年前
创建XML文件并链接到该文件是我的方法。

$outputxml = '/output.xml';

file_put_contents($_SERVER['DOCUMENT_ROOT'] . $outputxml, $client->__getLastRequest());

echo '<a href="' . $outputxml . '">here</a>';
To Top