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

时间:2010-05-27 21:39:22

标签: java json http servlets

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

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

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

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

如何获取我的json字符串?

1 个答案:

答案 0 :(得分:46)

来自HttpServletResponse#sendError() javadoc

  

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

因此,使用此方法除了自己从HTML响应中提取消息之外别无选择。但是,JSoup可能是useful

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

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

顺便说一句,您可以使用其中一个HttpServletResponse.SC_XXX constants来代替code