【问题标题】:Send error message as JSON object将错误消息作为 JSON 对象发送
【发布时间】:2011-02-24 21:26:45
【问题描述】:

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

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

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

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

如何获取我的 json 字符串?

【问题讨论】:

    标签: java json http servlets


    【解决方案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 代码中找到它的唯一方法。
    猜你喜欢
    • 1970-01-01
    • 2018-02-18
    • 1970-01-01
    • 2021-01-26
    • 2013-02-09
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多