为什么getLastRequest没有返回任何内容?

13

我正在尝试获取XML请求:

$cgProxy = new SoapClient($WSDL_URL,array('trace' => 1));

try {
        $result = $cgProxy->OrderCreate($cgOrder);

} catch (SoapFault $exc) {
        var_dump($exc);
        echo "Request:\n" . $cgProxy->__getLastRequest(), "\n";
        echo "Response:\n" . $cgProxy->__getLastResponse() . "\n";
}

使用这个方法,我从$exc转储中获得了SOAP服务器错误信息。但是getLastRequest似乎没有返回任何内容。有什么想法吗?

我也尝试过htmlspecialchars()和htmlentities(),但都没有成功...


你解决过这个问题吗?我也遇到了一个情况,我正在发送一个参数数组,但是__getLastResponse()显示空的SOAP包装器,没有传递任何参数。 - TonyTheJet
我曾经遇到过同样的问题,什么都没有显示出来。我在页面的源代码中找到了答案(通过浏览器上下文菜单打开它)。 - Michaël
3个回答

31

getLastRequest():

仅当使用 trace 选项创建 SoapClient 对象时,该方法才有效。

$client = new SoapClient("http://myservice/?WSDL",array("trace"=>1));

在这种情况下,对我有效。


1
我也遇到了这个问题,而且我已经启用了跟踪功能,所以这并没有解决问题。 - Rick Kukiela
没错,就像我在原帖中展示的那样,当跟踪设置为true时,这个问题对我来说确实存在。 - evan

11

也许是因为你的浏览器无法将XML打印为字符串。 如果是这样,请尝试像这样:

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

没有帮助到我,但是了解这种可能性还是值得检查和注意的。 - johnsnails

4
我知道现在有点晚了,但是...
如果 PHP 未能创建 SOAP 调用,则您可能根本没有发出请求。如果出现此问题,您将无法发送 XML 请求。请检查您的错误日志以查找 PHP SOAP 错误。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接