gpt4 book ai didi

java - 仅记录 http servlet 响应 header

转载 作者:可可西里 更新时间:2023-11-01 16:05:54 25 4
gpt4 key购买 nike

这是一个与Capture and log the response body相关的问题.如果我只想记录响应头而不是整个正文怎么办?是否有与链接问题中描述的方法不同的方法?

最佳答案

您想覆盖 HttpServletResponse#addHeader()HttpServletResponse#setHeader()方法代替。

public void doFilter(ServletRequest request, final ServletResponse response, FilterChain chain) throws IOException, ServletException {
final Map<String, List<String>> headers = new HashMap<String, List<String>>();
chain.doFilter(request, new HttpServletResponseWrapper((HttpServletResponse) response) {
@Override public void setHeader(String name, String value) {
List<String> values = new ArrayList<String>();
values.add(value);
headers.put(name, values);
super.setHeader(name, value);
}

@Override public void addHeader(String name, String value) {
List<String> values = headers.get(name);
if (values == null) {
values = new ArrayList<String>();
headers.put(name, values);
}
values.add(value);
super.addHeader(name, value);
}
});
logger.log(headers);
}

确实有更多设置 header 的方法,但在一个有点像样的 servletcontainer 实现中,它们都委托(delegate)给这一个方法(我已经在 Tomcat 和 Glassfish 中验证了它)。

或者,您也可以使用 servletcontainer 特定的日志记录功能。例如,Tomcat 似乎支持通过 valve 记录响应 header 。 .

关于java - 仅记录 http servlet 响应 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3415004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com