Java拦截器读取请求体使请求为空

时间:2014-01-09 11:26:52

标签: java spring interceptor

我使用spring编写了一个拦截器,它在preHandle方法中从HTTPServletRequest读取请求体。请求正文包含json。我也能读取请求体,但是请求对象发生了一些事情,请求体变得空白。因此,请求变成了一个糟糕的请求。任何帮助都感激不尽。提前谢谢。

1 个答案:

答案 0 :(得分:3)

我没有使用JEE拦截器或Spring拦截器,也不知道它们是如何工作的。

但听起来更简单的方法是使用过滤器(从web.xml配置)。由于过滤器在链中相互调用,因此您可以轻松地替换使用包装过的HttpServletRequest对象(您提供正文的位置)。

这可以通过创建自己的类来实现,扩展HttpServletRequestWrapper然后覆盖适当的方法(getInputStream听起来就像去的地方,是吗?)。

您的getInputStream版本将返回您已阅读的正文的ByteArrayInputStream,或者您觉得合适的任何类型的InputStream。