package com.nova.sankuai.domain.api.yangqianguan;
|
|
import org.apache.commons.io.IOUtils;
|
|
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;
|
|
public class ReReadableRequestWrapper extends HttpServletRequestWrapper {
|
|
private final byte[] body;
|
|
public ReReadableRequestWrapper(HttpServletRequest request) throws IOException {
|
super(request);
|
body = IOUtils.toByteArray(request.getInputStream());
|
}
|
|
@Override
|
public BufferedReader getReader() throws IOException {
|
return new BufferedReader(new InputStreamReader(this.getInputStream(), "UTF-8"));
|
}
|
|
@Override
|
public ServletInputStream getInputStream() {
|
return new ReReadableServletInputStream(body);
|
}
|
|
private static class ReReadableServletInputStream extends ServletInputStream {
|
|
private final ByteArrayInputStream in;
|
|
private ReReadableServletInputStream(byte[] bytes) {
|
this.in = new ByteArrayInputStream(bytes);
|
}
|
|
@Override
|
public boolean isFinished() {
|
return in.available() == 0;
|
}
|
|
@Override
|
public boolean isReady() {
|
return true;
|
}
|
|
@Override
|
public void setReadListener(ReadListener readListener) {
|
throw new RuntimeException("Not implemented");
|
}
|
|
@Override
|
public int read() throws IOException {
|
return this.in.read();
|
}
|
}
|
}
|