我正在尝试编写一个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和" apple"
记录响应长度的正确方法是什么?
答案 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()。长度()