使用Zend_Rest_Client时如何调试Web服务

时间:2009-08-18 21:57:15

标签: php zend-framework

所以我有一个使用Zend amazon Web服务客户端的应用程序。我现在从服务中收到错误,我想看到原始请求和响应。

我无法在文档中找到这样做的方法!这个类实现了Zend_Rest_Client,所以看起来应该有一个rawResponse()方法,但是没有。这是在生产服务器上,我在防火墙后面,所以我不能代理fiddler。

有什么建议吗?

3 个答案:

答案 0 :(得分:3)

Zend_Rest_Client扩展了Zend_Service_Abstract,后者又实现了一个getHttpClient()方法,该方法返回一个Zend_Http_Client实例,该方法公开了一个getLastResponse()方法,该方法返回一个Zend_Http_Response实例,它再次暴露了getBody()方法。 Phew,我猜是OOP :)。

让我们谈谈我们的语言:

$restClient->getHttpClient()->getLastResponse()->getBody();

就是这样。

编辑:

Zend_Service_Abstract::getHttpClient()似乎是静态的,所以您甚至可以这样称呼它:

Zend_Service_Abstract::getHttpClient()->getLastResponse()->getBody();

但我不推荐它。您必须确切地知道何时调用该方法,因为HTTP客户端必须填充一些响应。更不用说静态方法只是某种全局变量,这很糟糕。

答案 1 :(得分:0)

所以答案是重载亚马逊类,并打印出ItemSearch / ItemLookup中的$ response-> getBody()方法

答案 2 :(得分:0)

如果您想查看收到的实际xml,那么您应该:
$ actual_xml = htmlentities($ client-> getHttpClient() - > getLastResponse() - > getBody());
echo $ actual_xml;

请注意。
如果你想把它写入文件,那么使用htmlspecialchars_decode($ actual_xml);