Java Jersey REST响应消息正文

Java Jersey REST响应消息正文,java,jersey,Java,Jersey,如何在筛选器方法中将响应消息正文打印为字符串,并尝试了两种响应方法(getEntityOutputStream()/getEntity()/GetContainerResponseWriter()) 我使用Jersey日志打印请求/响应正文 在我的资源配置中 registerInstances(new LoggingFilter(myLogger, true)); 日志过滤器 public class LoggingFilter implements ContainerRequestFilte

如何在筛选器方法中将响应消息正文打印为字符串,并尝试了两种响应方法
(getEntityOutputStream()/getEntity()/GetContainerResponseWriter())


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

在我的资源配置中

registerInstances(new LoggingFilter(myLogger, true));
日志过滤器

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

您可以查看他们是如何做到的:

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

在我的资源配置中

registerInstances(new LoggingFilter(myLogger, true));
日志过滤器

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

你可以看看他们是怎么做的:

我也有同样的问题,这就是我最后要做的。基本上,如果可以强制转换,我将返回实体的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() + "]";
    }

}

我也有同样的问题,这就是我最后做的。基本上,如果可以强制转换,我将返回实体的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() + "]";
    }

}

我不想使用LoggingFilter。另外,只想使用jersey 1.x而不是jersey 2.x。我不想使用LoggingFilter。另外,希望只使用jersey 1.x而不是jersey 2.x。