【问题标题】:Intercept and analyze responses from Zend_Rest_Server拦截并分析来自 Zend_Rest_Server 的响应
【发布时间】:2012-03-09 09:42:02
【问题描述】:

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

为了制作 REST Web 服务,我使用了这个 sn-p 代码:

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

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

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

附:例如,在 SOAP Web 服务中,我可以这样做:

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

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

并分析响应

【问题讨论】:

    标签: php zend-framework rest frameworks


    【解决方案1】:

    您可以像这样记录请求:

    $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 );
    

    【讨论】:

    • 感谢您的回复,但这是“请求”,因为请求一切正常,我需要将答案发送给客户,例如。使用 Zend_Json_Server() 我可以使用 $server->getResponse()->getResult()
    • 我再次编辑了代码。这应该可以得到响应。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 2016-05-02
    • 2018-07-14
    • 1970-01-01
    • 2021-05-02
    相关资源
    最近更新 更多