简介
上一篇:https://blog.csdn.net/weixin_45863786/article/details/110220426 讲到移动端使用jwt生成token令牌,后续拦截器获取前端传过来的token信息,持续request.getInputStream()异常,这篇讲解使用过滤器解决持续打开流的异常解决方法。
一.编写读取器请求包装类
import javax.servlet.ReadListener;
import javax.servlet.ServletInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import java.io.*;
/**
* 解决request请求问题
* @author huangan
* @date 2020/11/19 21:43
*/
public class BodyReaderRequestWrapper extends HttpServletRequestWrapper {
private final String body;
public BodyReaderRequestWrapper(HttpServletRequest request) throws IOException {
super(request);
StringBuilder sb = new StringBuilder();
InputStream ins = request.getInputStream();
BufferedReader isr = null;
try {
if (ins != null) {
isr = new BufferedReader(new InputStreamReader(ins));
char[] charBuffer = new char[128];
int readCount = 0;
while ((readCount = isr.read(charBuffer)) != -1) {
sb.append(charBuffer, 0, readCount);
}
ins.close();
}else{
sb.append("");
}
}finally {
if (isr != null){