我使用spring编写了一个拦截器,它在preHandle方法中从HTTPServletRequest读取请求体。请求正文包含json。我也能读取请求体,但是请求对象发生了一些事情,请求体变得空白。因此,请求变成了一个糟糕的请求。任何帮助都感激不尽。提前谢谢。
答案 0 :(得分:3)
我没有使用JEE拦截器或Spring拦截器,也不知道它们是如何工作的。
但听起来更简单的方法是使用过滤器(从web.xml配置)。由于过滤器在链中相互调用,因此您可以轻松地替换使用包装过的HttpServletRequest对象(您提供正文的位置)。
这可以通过创建自己的类来实现,扩展HttpServletRequestWrapper然后覆盖适当的方法(getInputStream听起来就像去的地方,是吗?)。
您的getInputStream版本将返回您已阅读的正文的ByteArrayInputStream,或者您觉得合适的任何类型的InputStream。