我有两个servlet:第一个servlet类似于客户端,并创建一个HttpURLConnection
来调用第二个servlet。
我想发送一个特殊的错误,格式化为JSON对象,所以我用这种方式调用sendError方法:
response.sendError(code, "{json-object}")
但是在第一个servlet中,当我用getResponseMessage
方法读取错误时,我只得到标准的HTTP消息而不是我的json对象作为字符串。
如何获取我的json字符串?
答案 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
。