原因:spring 先使用 InputStream stream = request.getInputStream(), 将数据解析放到被@RequestBody注解的对象上面。
这是后stream 已经读取完毕, read()已经指向到了数据的末尾 ,相当于这个stream已经失效了,所以spring顺手关闭了这个流。
网上有很多解决办法,根据每个人实际的情况不同,解决办法也不同,(网上很多博客都用HttpServletRequestWrapper)。
由于我当时是使用Spring aop ,所以 我直接使用
@Around("pointcut()")
public Object handle(ProceedingJoinPoint joinPoint) throws Throwable{
Object[] args = joinPoint.getArgs();//获取方法传入的参数
//逻辑处理
Object retVal = joinPoint.proceed();
return retVal;
}
其实整个过程, 里面涉及到的一些基本知识: