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

我想发送一个特殊的错误,格式类似于JSON对象,所以我用以下方式调用sendError方法:

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

But in the first servlet when I read error with getResponseMessage method I just get standard HTTP message and not my json object as a string.

如何获取json字符串?

推荐答案

From the HttpServletResponse#sendError() javadoc:

服务器默认创建响应,使其看起来像包含指定消息的HTML格式的服务器错误页面,将内容类型设置为"text/HTML",保留cookie和其他标题不变.如果为与传入的状态代码相对应的web应用程序做出了错误页面声明,那么它将优先于建议的msg参数返回.

因此,使用这种方法时,您没有其他 Select ,只能自己从HTML响应中提取消息.然而,在这里,JSoup可能是useful.

要实现您想要的,您需要设置错误代码并自己编写响应,例如.

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

Instead of code you could by the way also use one of the HttpServletResponse.SC_XXX constants for this.

Json相关问答推荐

我发现GoFr响应总是包含在数据字段中,如何返回自定义响应?

Vega-Lite(Deneb):难以将最小和最大值应用于折线图和文本标签以及线条末尾的点

jq 对特定键进行过滤并将值整理到单个 csv 单元格中

取消嵌套数组并将数组名称添加为附加字段

数据清理设计不良的 JSON 数据 - 需要有关最佳策略的建议

无法使用 vue.js 访问 JSON 数组的项目

为什么解析的字典相等而腌制的字典不相等?

如何从字符串中创建一个逗号分隔的列表,由 API 中的 JSON 对象内的编号空格分隔?

JOLT 在 struct 体中间添加一个 JSON 字段

使用 JQ 从文件中删除重复的 JSON 块

SyntaxError:Object.parse(本机)AngularJS中的意外标记o

如何使用 jq 将 JSON 对象流转换为数组

将json字符反序列化为枚举

对象序列化为 JSON(使用 Gson).如何在 UpperCamelCase 中设置字段名称?

在浏览器中查看 JSON 文件

使用 Retrofit 解析动态密钥 Json 字符串

使用 Python 3 读取 JSON 文件

请求返回字节,我无法解码它们

JSON JQ 如果没有 else

PHP json_encode json_decode UTF-8