gpt4 book ai didi

java - 如何将错误消息添加到响应正文?

转载 作者:行者123 更新时间:2023-11-30 03:02:36 24 4
gpt4 key购买 nike

我有一个 Java Servlet 类,当我的应用程序中存在身份验证问题时,我尝试在其中设置错误状态。但是,问题是,我可以设置错误状态,但无法在响应正文中设置错误消息。以下是我的尝试:

AuthorizationFilter.java

public class AuthorizationFilter implements Filter {
@Autowired
private ExceptionHandler exceptionHandler;

@Override
public void doFilter(final ServletRequest servletRequest, final ServletResponse servletResponse, final FilterChain filterChain) throws IOException, ServletException {
final HttpServletRequest request = (HttpServletRequest) servletRequest;
final HttpServletResponse response = (HttpServletResponse) servletResponse;

UserSession userSession = null;
try {
userSession = authProvider.authenticate(request, response);
} catch(RestUsageException throwable) {
exceptionHandler.handle(throwable.getExceptionCode(), throwable.getMessage(), throwable, response);
response.sendError(throwable.getRespondStatus().value());
// response.sendError(throwable.getRespondStatus().value(), "Message");
return;
}
...more code here
}

异常处理程序.java

@Override
public void handle(String exceptionCode, String message, Throwable throwable, final ServletResponse response) throws IOException {

String uuid = UUID.randomUUID().toString();
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String json = "{ \n" +
" \"errorCode\":\""+exceptionCode+"\",\n" +
" \"errorMessage\":\""+throwable.getMessage()+"\",\n" +
" \"success\":\"false\",\n" +
" \"errorId\":\""+uuid+"\"\n" +
"}";
response.getOutputStream().println(json);
// response.getOutputStream().flush();
}

我的 throwable 包含我想要显示的正确 HTTP 状态。我尝试了两件事:

  1. 我尝试遵循以下方法:public void sendError(int sc, java.lang.String 消息) 抛出 java.io.IOException

但是该消息似乎只显示在 HTTP Status header 中。

  • 我尝试 response.getOutputStream().flush(); 刷新响应,但当我尝试执行 response.sendError(throwable.getRespondStatus().value( )); 之后,我收到一条错误消息,提示我的响应已提交,并且我的正文显示出来,但状态最终为 200。
  • 关于如何设置错误消息正文有什么想法吗?任何帮助,将不胜感激。谢谢!

    最佳答案

    您不能将响应流与 response.sendError(...) 结合使用。尝试使用 respons.setStatus(...) 代替。

    关于java - 如何将错误消息添加到响应正文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35586643/

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