You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.7 KiB
61 lines
1.7 KiB
3 years ago
|
package com.fr.plugin;
|
||
|
|
||
|
import javax.servlet.ReadListener;
|
||
|
import javax.servlet.ServletInputStream;
|
||
|
import javax.servlet.http.HttpServletRequest;
|
||
|
import javax.servlet.http.HttpServletRequestWrapper;
|
||
|
import java.io.BufferedReader;
|
||
|
import java.io.ByteArrayInputStream;
|
||
|
import java.io.IOException;
|
||
|
import java.io.InputStreamReader;
|
||
|
|
||
|
/**
|
||
|
* 二次封装请求,避免获取了body之后,无法继续处理请求
|
||
|
*/
|
||
|
public class MultiReadHttpServletRequest extends HttpServletRequestWrapper {
|
||
|
public String _body;
|
||
|
|
||
|
public MultiReadHttpServletRequest(HttpServletRequest request) throws IOException {
|
||
|
super(request);
|
||
|
StringBuffer sBuffer = new StringBuffer();
|
||
|
BufferedReader bufferedReader = request.getReader();
|
||
|
String line;
|
||
|
while ((line = bufferedReader.readLine()) != null) {
|
||
|
sBuffer.append(line);
|
||
|
}
|
||
|
_body = sBuffer.toString();
|
||
|
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public ServletInputStream getInputStream() {
|
||
|
final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(_body.getBytes());
|
||
|
return new ServletInputStream() {
|
||
|
@Override
|
||
|
public int read() {
|
||
|
return byteArrayInputStream.read();
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isFinished() {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isReady() {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void setReadListener(ReadListener listener) {
|
||
|
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public BufferedReader getReader() {
|
||
|
return new BufferedReader(new InputStreamReader(this.getInputStream()));
|
||
|
}
|
||
|
}
|