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

pAk*_*Y88 26 java json servlets http

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

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

response.sendError(code, "{json-object}")
Run Code Online (Sandbox Code Playgroud)

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

我怎么能得到我的json字符串?

Bal*_*usC 51

来自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);
Run Code Online (Sandbox Code Playgroud)

code顺便说一下,你也可以使用其中一个HttpServletResponse.SC_XXX常量.