将错误消息作为 JSON 对象发送

2022-09-01 09:34:03

我有两个 servlet:第一个 servlet 类似于客户端,并创建一个调用第二个 servlet 的 servlet。HttpURLConnection

我想发送一个特殊的错误,格式像一个JSON对象,所以我以这种方式调用sendError方法:

response.sendError(code, "{json-object}")

但是在第一个servlet中,当我用方法读取错误时,我只得到标准的HTTP消息,而不是我的json对象作为字符串。getResponseMessage

如何获取我的 json 字符串?


答案 1

From the HttpServletResponse#sendError() javadoc

服务器默认将响应创建为看起来像包含指定消息的 HTML 格式的服务器错误页面,将内容类型设置为“text/html”,使 Cookie 和其他标头保持不变。如果已为 Web 应用程序进行了与传入的状态代码相对应的错误页声明,则将优先于建议的 msg 参数将其送回。

因此,使用此方法,除了自己从HTML响应中提取消息之外,您别无选择。然而,JSoup可能在这方面很有用

为了实现您想要的目标,您需要设置错误代码并自己编写响应,例如

response.setStatus(code);
response.setContentType("application/json");
response.setCharacterEncoding("UTF-8");
response.getWriter().write(json);

顺便说一句,您也可以使用HttpServletResponse.SC_XXX常量之一。code


答案 2