拦截并分析Zend_Rest_Server的响应

时间:2012-03-09 09:42:03

标签: php zend-framework rest frameworks

我使用Zend Framework 1.11使用Zend_Rest_server类在PHP中创建REST Web服务,但是在将这些响应发送到客户端之前,我无法拦截和分析来自Zend_Rest_server实例的响应。

要制作REST Web服务,我使用以下代码片段:

$server = new Zend_Rest_Server();
$server->setClass('Ws_dummy', 'dummy');
$server->handle();

是否有记录回复的方法,因为我需要对其进行分析,而且我无法找到解决此需求的方法。

提前感谢您提供的任何帮助。

P.S。例如,在SOAP Web服务中,我可以这样做:

$server->setReturnResponse(true);
$response = $server->handle();

$server->handle();
$response = $server->getLastResponse();

并分析回复

1 个答案:

答案 0 :(得分:0)

您可以像这样记录请求:

$writer = new Zend_Log_Writer_Stream('/path/to/logfile');
$logger = new Zend_Log($writer);
$logger->info( Zend_Debug::dump( $_REQUEST, 'Request-Dump', false );

您应该在Rest_Server处理请求之前执行此操作。 如果你有进一步的问题 - 只要问: - )


编辑(添加了一些有用的信息):

理解Zend_Debug :: dump()方法包装PHP函数var_dump()可能会有所帮助。如果输出流被检测为Web演示文稿,则var_dump()的输出将使用htmlspecialchars()进行转义,并使用(X)HTML预标记进行包装。


编辑#2:

您可以使用以下命令返回Zend_Rest_Server的响应:

$server->returnResponse(true);

在$ server-> handle()之前。


编辑#3:

请注意: 如果我已经阅读了所有内容,如果您要返回响应,则需要自己发送标题。 您可以使用以下方式获取/ +设置标题:

$headers = $server->getHeaders();
foreach( $headers as $header ) header( $header );