SoapClient::__getLastResponse

(PHP 5, PHP 7, PHP 8)

SoapClient::__getLastResponse返回最后一个 SOAP 响应

描述

public SoapClient::__getLastResponse(): ?string

返回最后一次 SOAP 响应中接收到的 XML。

注意:

此方法仅在 SoapClient 对象的创建时将 trace 选项设置为 true 时有效。

参数

此函数没有参数。

返回值

最后一个 SOAP 响应,以 XML 字符串形式。

示例

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

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

参见

添加说明

用户贡献说明 4 个说明

ceo at l-i-e dot com
18 年前
哎呀!
该示例需要
$soapClient = new SoapClient($url, array('trace'=>1));
来首先开启跟踪功能。
ceo at l-i-e dot com
18 年前
为了调试无法正常工作的内容,您几乎肯定需要在 SOAP 调用周围包装一个 try/catch 块。

否则,PHP 会在您执行此函数之前抛出致命错误。

例如
<?php
$soapClient
= new SoapClient($url);
echo
htmlentities($soapClient->__getFunctions());
// 假设已输出 'someFunction'(以及其他)
try {
$results = $soapClient->someFunction(...);
}
catch (
SoapFault $soapFault) {
var_dump($soapFault);
echo
"Request :<br>", htmlentities($soapClient->__getLastRequest()), "<br>";
echo
"Response :<br>", htmlentities($soapClient->__getLastResponse()), "<br>";
}
?>

如果没有 try/catch,您只会得到致命错误,并且 PHP 会在您调用 __getLastRequest/__getLastResponse 之前自杀。
mayurvirkar at gmail dot com
10 年前
只是为了使其更具可读性

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

PS:如果您使用的是 \n,那么您需要将上面的语句括在 <pre> 中。您也可以使用 <br />,但这会变得有点乱。
bshafs at gmail dot com
13 年前
您不需要将 SoapClient 放在 try-catch 块中。只需将 "exceptions" 选项设置为 false,然后将返回 SoapFault 实例而不是抛出它。
To Top