编辑
2023-11-03
遇到的问题
00
请注意,本文编写于 541 天前,最后修改于 541 天前,其中某些信息可能已经过时。

目录

前提
原因
衍生问题

前提

业务需要,需要设置一个拦截器,对特定接口进行校验,使用HttpServletRequest.getParameter()和getParameterMap()以及getAttribute()都获取不到请求参数,数据为空

原因

因为是springBoot项目,参数一般都是Post方式,@RequestBody的形式,前端的配置类型是application/json,所以获取不到参数,@RequestBody是通过流的形式读取的,我们也得使用流的方式读取参数.一般使用,request.getInputStream()或者getReader()方式

衍生问题

request.getInputStream()或者getReader()只能调用一次,如果在拦截器层就调用了,那么@RequestBody就读取不了会出现异常信息

java
I/O error while reading input message; nested exception is java.io.IOException: Stream closed

或者

java
java.lang.IllegalStateException: getReader() has already been called for this request

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!