将错误消息作为 JSON 对象发送
Posted
技术标签:
【中文标题】将错误消息作为 JSON 对象发送【英文标题】:Send error message as JSON object 【发布时间】:2011-02-24 21:26:45 【问题描述】:我有两个 servlet:第一个 servlet 类似于客户端,并创建一个 HttpURLConnection
来调用第二个 servlet。
我想发送一个特殊的错误,格式像一个 JSON 对象,所以我这样调用 sendError 方法:
response.sendError(code, "json-object")
但是在第一个 servlet 中,当我使用 getResponseMessage
方法读取错误时,我只收到标准 HTTP 消息,而不是我的 json 对象作为字符串。
如何获取我的 json 字符串?
【问题讨论】:
【参考方案1】:来自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
。
【讨论】:
非常感谢。我对此有疑问,我发布了这个问题,你的建议是获取 json 字符串而不在 html 代码中找到它的唯一方法。以上是关于将错误消息作为 JSON 对象发送的主要内容,如果未能解决你的问题,请参考以下文章
如何在php rabbitmq中将完整对象作为消息从生产者发送到消费者