为啥 getLastRequest 不返回任何内容?

Posted

技术标签:

【中文标题】为啥 getLastRequest 不返回任何内容?【英文标题】:why is getLastRequest not returning anything?为什么 getLastRequest 不返回任何内容? 【发布时间】:2012-04-02 07:21:25 【问题描述】:

我正在尝试获取 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 转储中得到了肥皂服务器错误。但是 getLastRequest 似乎没有返回任何东西。有什么想法吗?

我也尝试过使用 htmlspecialchars() 和 htmlentities() 没有成功。 . .

【问题讨论】:

你解决过这个问题吗?我还有一种情况,我正在发送参数数组,但 __getLastResponse() 显示没有传递参数的空 SOAP 包装器。 我遇到了同样的问题,没有任何显示。我在页面的源代码中找到了响应(通过浏览器上下文菜单打开它)。 【参考方案1】:

getLastRequest():

此方法仅在创建 SoapClient 对象且跟踪选项设置为 TRUE 时才有效。

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

在这种情况下对我有用。

【讨论】:

我也有这个问题,而且我确实启用了跟踪,所以这不能解决问题。 是的,我在原始帖子中显示的跟踪设置为 true 时存在问题。【参考方案2】:

可能是因为您浏览器中的 XML 没有打印为字符串。 如果是这样,请尝试以下操作:

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

【讨论】:

没有帮助我,但值得检查/意识到这是一种可能性。【参考方案3】:

我知道这已经晚了,但是......

您可能从未真正提出请求。如果 php 未能创建 SOAP 调用,您将永远无法到达发送 XML 请求的地步。检查您的错误日志以了解 PHP SOAP 错误。

【讨论】:

以上是关于为啥 getLastRequest 不返回任何内容?的主要内容,如果未能解决你的问题,请参考以下文章

main 函数不返回任何内容。为啥? [复制]

为啥我的 Perl 映射不返回任何内容?

为啥替换在空字符串上不返回任何内容

为啥 java.sql.ResultSet 的“getFloat(column)”方法不返回任何内容,而其他方法则返回?

.Net UdpClient Receive - 关于为啥它不返回任何内容的技术问题

为啥调用存储过程不返回任何东西?