【问题标题】:Modifying HTTP response body and message修改 HTTP 响应正文和消息
【发布时间】:2016-10-07 22:49:53
【问题描述】:

当有人点击我的服务 API 时,我需要能够修改我收到的响应的 HTTP 响应正文。我尝试使用 ConatinerResponseFilter 来修改正文,但我相信它只会修改标题而不是响应正文。谁能告诉我如何修改 HTTP 响应正文、消息和状态?

【问题讨论】:

  • response.data 将有您的响应正文 console.log(response); 以查看您的 API 返回什么

标签: java jax-rs


【解决方案1】:

这可以通过WriterInterceptor来实现:

@Provider
public class CustomWriterInterceptor implements WriterInterceptor {

    @Override
    public void aroundWriteTo(WriterInterceptorContext context) 
                throws IOException, WebApplicationException {

        OutputStream outputStream = context.getOutputStream();

        // Manipulate the HTTP entity using the OutputStream

        context.setOutputStream(outputStream);
        context.proceed();
    }
}

answer 中,您将找到一个示例,说明如何使用 Jackson 修改在 请求负载 中发送的 JSON(可以使用相同的想法来操作 响应负载)。

【讨论】:

    【解决方案2】:

    诀窍是使用包装器,因为正文在作为流读取时变得可访问

    Modify HttpServletRequest body

    检查这个或只是在线检查修改过滤器中的正文

    注意:如果你正在做一个网络服务,那么使用像 CXF 这样的框架可以很容易地修改

    【讨论】:

    • OP 想要修改 response payload
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 2015-07-12
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多