importjavax.servlet.ReadListener;importjavax.servlet.ServletInputStream;importjavax.servlet.http.HttpServletRequest;importjavax.servlet.http.HttpServletRequestWrapper;import java.io.*;public class RequestWrapper extendsHttpServletRequestWrapper {private finalString body;publicRequestWrapper(HttpServletRequest request) {super(request);
StringBuilder stringBuilder= newStringBuilder();
BufferedReader bufferedReader= null;
InputStream inputStream= null;try{
inputStream=request.getInputStream();if (inputStream != null) {
bufferedReader= new BufferedReader(newInputStreamReader(inputStream));char[] charBuffer = new char[128];int bytesRead = -1;while ((bytesRead = bufferedReader.read(charBuffer)) > 0) {
stringBuilder.append(charBuffer,0, bytesRead);
}
}else{
stringBuilder.append("");
}
}catch(IOException ex) {
}finally{if (inputStream != null) {try{
inputStream.close();
}catch(IOException e) {
e.printStackTrace();
}
}if (bufferedReader != null) {try{
bufferedReader.close();
}catch(IOException e) {
e.printStackTrace();
}
}
}
body=stringBuilder.toString();
}
@Overridepublic ServletInputStream getInputStream() throwsIOException {final ByteArrayInputStream byteArrayInputStream = newByteArrayInputStream(body.getBytes());
ServletInputStream servletInputStream= newServletInputStream() {
@Overridepublic booleanisFinished() {return false;
}
@Overridepublic booleanisReady() {return false;
}
@Overridepublic voidsetReadListener(ReadListener readListener) {
}
@Overridepublic int read() throwsIOException {returnbyteArrayInputStream.read();
}
};returnservletInputStream;
}
@Overridepublic BufferedReader getReader() throwsIOException {return new BufferedReader(new InputStreamReader(this.getInputStream()));
}publicString getBody() {return this.body;
}
}