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.
63 lines
1.6 KiB
63 lines
1.6 KiB
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; |
|
} |
|
}
|
|
|