<JAX-RS响应滤波器&gt; getLength()始终为-1

时间:2017-08-16 21:04:48

标签: java jax-rs

我正在尝试编写一个JAX-RS响应过滤器来记录请求和响应详细信息,但是尽管响应具有正文内容,responseContext.getLength()始终返回-1。

这是我的代码:

@Override
public void filter(final ContainerRequestContext requestContext,
                   final ContainerResponseContext responseContext) throws IOException {

    System.out.println(responseContext.getLength());

    if (responseContext.hasEntity()) {
        System.out.println(responseContext.getEntity());
    }
}

输出:

-1和&#34; apple&#34;

记录响应长度的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

如果你看一下ContextResponseContext的java-docs

http://docs.oracle.com/javaee/7/api/javax/ws/rs/container/ContainerResponseContext.html#getLength--

Content-Length为整数(如果存在)和有效数字。在其他情况下返回-1。

通过这个,我猜它为什么返回-1非常明显。你能在响应对象中设置它吗?

另外,如果您只想要答案的长度,可能是您可以这样做:     responseContext.getEntity()。长度()