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.
64 lines
1.6 KiB
64 lines
1.6 KiB
2 years ago
|
package com.hzdatalink.gsdes.bean;
|
||
|
|
||
|
import com.fr.third.jodd.io.StreamUtil;
|
||
|
|
||
|
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;
|
||
|
|
||
|
/**
|
||
|
* @author xx
|
||
|
* @date 2020/11/20
|
||
|
*/
|
||
|
public class BodyReaderHttpServletRequestWrapper extends HttpServletRequestWrapper {
|
||
|
private BufferedReader br;
|
||
|
private byte[] body;
|
||
|
public BodyReaderHttpServletRequestWrapper(HttpServletRequest request) throws IOException {
|
||
|
super(request);
|
||
|
//this.br = request.getReader();
|
||
|
body = StreamUtil.readBytes(request.getInputStream());
|
||
|
}
|
||
|
|
||
|
|
||
|
@Override
|
||
|
public BufferedReader getReader() throws IOException {
|
||
|
return new BufferedReader(new InputStreamReader(getInputStream()));
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public ServletInputStream getInputStream() throws IOException {
|
||
|
final ByteArrayInputStream bais = new ByteArrayInputStream(body);
|
||
|
return new ServletInputStream() {
|
||
|
|
||
|
@Override
|
||
|
public boolean isFinished() {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public boolean isReady() {
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public void setReadListener(ReadListener readListener) {
|
||
|
|
||
|
}
|
||
|
|
||
|
@Override
|
||
|
public int read() throws IOException {
|
||
|
return bais.read();
|
||
|
}
|
||
|
};
|
||
|
}
|
||
|
|
||
|
public void setBody(byte[] body) {
|
||
|
this.body = body;
|
||
|
}
|
||
|
}
|