3
に基づいてレスポンスボディを変更します応答本体を暗号化します。 それ以外の場合は、要求/応答本文を変更しないでください。のJavaフィルタは、条件付きで、私は、ヘッダー「暗号化」カスタムの要求とチェックを遮断するサーブレットフィルタを持っている要求
応答を必要なときに変更するにはどうすればよいですか?あなたはHttpServletResponseWrapperを例を使用する必要が
に基づいてレスポンスボディを変更します応答本体を暗号化します。 それ以外の場合は、要求/応答本文を変更しないでください。のJavaフィルタは、条件付きで、私は、ヘッダー「暗号化」カスタムの要求とチェックを遮断するサーブレットフィルタを持っている要求
応答を必要なときに変更するにはどうすればよいですか?あなたはHttpServletResponseWrapperを例を使用する必要が
は次のとおりです。
public class ReadTwiceHttpServletRequestWrapper extends HttpServletRequestWrapper {
private ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
public ReadTwiceHttpServletRequestWrapper(HttpServletRequest request) {
super(request);
try {
IOUtils.copy(request.getInputStream(), outputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public BufferedReader getReader() throws IOException {
return new BufferedReader(new InputStreamReader(new ByteArrayInputStream(outputStream.toByteArray())));
}
@Override
public ServletInputStream getInputStream() throws IOException {
final ByteArrayInputStream inputStream = new ByteArrayInputStream(outputStream.toByteArray());
return new ServletInputStream() {
@Override
public int readLine(byte[] b, int off, int len) throws IOException {
return inputStream.read(b, off, len);
}
@Override
public boolean isFinished() {
return inputStream.available() > 0;
}
@Override
public boolean isReady() {
return true;
}
@Override
public void setReadListener(ReadListener arg0) {
// TODO Auto-generated method stub
}
@Override
public int read() throws IOException {
return inputStream.read();
}
};
}
public void setBody(String body) {
outputStream = new ByteArrayOutputStream();
try {
outputStream.write(body.getBytes());
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public String getBody() {
return new String(outputStream.toByteArray());
}
はHow to get the XML from POST request and modify it in Servlet Filter?
を参照してください:
これは身体を設定することができる方法の一例であるhttp://www.programcreek.com/java-api-examples/javax.servlet.http.HttpServletResponseWrapper
を参照してください。これは質問に答えることはできません。レスポンス本体で、ヘッダーではありません。 – yuz
@yuz私は自分の答えを更新しました。 –
ありがとうございます。 – yuz