gpt4 book ai didi

java - 如何从 HttpServletResponse 获取错误消息

转载 作者:行者123 更新时间:2023-12-05 07:21:58 24 4
gpt4 key购买 nike

在我的应用程序中,我有 2 个过滤器:

1) 首先,抛出异常,我调用 response.sendError(UNAUTHORIZED.getStatusCode(), "My message");

2) 其次用于记录对数据库的请求和响应。

我有一列“error_message”,我想将来自过滤器 1 的错误消息保存到过滤器 2 中。我如何在 weblogic 上执行此操作?我有 javax.servlet.http.HttpServletResponse,我只能获取状态:response.getStatus()

使用 Spring 我可以调用ServletRequestContext.current().getErrorMessage() 但是当我使用 weblogic 时它不起作用。

最佳答案

无需创建自定义 HttpServletResponseWrapper。您可以使用 ContentCachingResponseWrapper,因为它提供方法 getContentAsByteArray()。

更多信息 - How to read and copy the HTTP servlet response output stream content for logging

public void doFilterInternal(HttpServletRequest servletRequest, HttpServletResponse servletResponse,
FilterChain filterChain) throws IOException, ServletException {

HttpServletRequest request = servletRequest;
HttpServletResponse response = servletResponse;
ContentCachingRequestWrapper requestWrapper = new ContentCachingRequestWrapper(request);
ContentCachingResponseWrapper responseWrapper =new ContentCachingResponseWrapper(response);
try {
super.doFilterInternal(requestWrapper, responseWrapper, filterChain);

} finally {

byte[] responseArray=responseWrapper.getContentAsByteArray();
String responseStr=new String(responseArray,responseWrapper.getCharacterEncoding());
System.out.println("string"+responseStr);
/*It is important to copy cached reponse body back to response stream
to see response */
responseWrapper.copyBodyToResponse();

}

}

关于java - 如何从 HttpServletResponse 获取错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56692447/

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