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

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

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

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

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

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

来自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