繁体   English   中英

Jersey REST响应消息正文

[英]Jersey REST response message body

如何在过滤器方法和尝试的几种响应方法中将响应消息正文打印为字符串(getEntityOutputStream() / getEntity() / GetContainerResponseWriter() )

public class Test implements ContainerRequestFilter , ContainerResponseFilter) { 

    @Override 
    public ContainerResponse filter(ContainerRequest request, ContainerResponse response) { 
        response. 
    } 
}

我使用Jersey日志记录打印请求/响应正文

在我的ResourceConfig中

registerInstances(new LoggingFilter(myLogger, true));

LoggingFilter的

public class LoggingFilter implements ContainerRequestFilter,  ClientRequestFilter, ContainerResponseFilter,
    ClientResponseFilter, WriterInterceptor {
...

您可以查看他们的操作方式: https : //github.com/jersey/jersey/blob/master/core-common/src/main/java/org/glassfish/jersey/filter/LoggingFilter.java

我遇到了同样的问题,这就是我最终要做的。 基本上,如果可以转换,我会返回实体的JSON表示形式,否则会创建自定义响应消息。

我敢肯定会有更好的方法。

private String createLoggingResponse(ContainerResponseContext resp) {

    Object entity = resp.getEntity();

    if (BaseModel.class.isInstance(entity)) {
        BaseModel model = (BaseModel) entity;
        ByteArrayOutputStream out = new ByteArrayOutputStream();
        model.toJson(out);
        return new String(out.toByteArray());

    } else {

        MediaType mediaType = resp.getMediaType();

        return "[" + entity.toString() + "," + resp.getStatusInfo().getStatusCode() + "," + resp.getStatusInfo().getReasonPhrase() + "," + mediaType.toString() + "]";
    }

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM