在ContainerResponseFilter的filter方法中,ContainerRequest .getEntity为空

时间:2012-08-28 00:49:38

标签: jersey

我正在创建自己的日志记录过滤器,实现ContainerRequestFilterContainerResponseFilter。我想仅在响应失败时打印请求实体,例如。响应状态代码为404,500。

但是当我执行request.getEntity()或request.getEntityInputStream()时,我得到空字符串 在ContainerResponseFilter()的过滤方法中;

看起来泽西在资源级别阅读后删除了内容。

1 个答案:

答案 0 :(得分:0)

它需要从输入流中读取实体,该实体不可重置(所涉及的基础设施不保留它的副本)。因此,当先前读取输入流时,当您在实现request.getEntityInputStream()的类中调用ContainerResponseFilter时,它应该没有任何内容。 LoggingFilter为您完成工作。但正如您所提到的,如果您想要自定义它,那么您需要编写类似于该实现的实现,并添加代码来自定义日志记录。