java - 无法从 Java servlet 中的请求对象中读取 JSON 正文
问题描述
我创建了一个接受 POST 请求的 java servlet。在 POST 请求的正文中有一个 JSON 有效负载。请求看起来像这样 -
在 servlet 中,我试图获取 JSON 有效负载并打印它 -
StringBuffer jb = new StringBuffer();
String line = null;
try {
BufferedReader reader = slingRequest.getReader();
while ((line = reader.readLine()) != null)
jb.append(line);
} catch (Exception e) { /*report an error*/ }
try {
JSONObject jsonObject = HTTP.toJSONObject(jb.toString());
PrintWriter pw = slingResponse.getWriter();
pw.println(jsonObject);
pw.close();
} catch (JSONException e) {
// crash and burn
throw new IOException("Error parsing JSON request string");
}
输出如下 -
{"{ \"metadata\"":"{ \"id\": \"a@A.com\", \"subscription-pref\": \"Subs\", \"category\": \"COURSE\", \"isSubscribed\": true, \"source\": \"form\" } }}","Request-URI":"subscription","Method":"{","HTTP-Version":":"}
请注意,subscription
输出中不存在该节点。相反,它显示为 的值Request-URI
。为什么我会得到这些附加值,例如Request-URI
and HTTP-Version
。为什么subscription
节点不见了?我只想阅读 JSON 有效负载
解决方案
推荐阅读
- c# - 更改场景时访问 AudioSource 对象
- sql - 在 Eclipse (rbfw) 中使用 DatabaseLibrary 的 SQL 语句返回乱码而不是仅返回确切值
- python - 如何为特定的 POS 打印机格式化 Python 字符串
- python - 如何异步使用playsound?
- javascript - 根据传单中的数据属性更改标记颜色
- python - 当我尝试分组时,位置参数跟随关键字参数错误
- google-apps-script - 从另一个 Apps Script 项目运行 Apps Script Web App 时如何以编程方式进行身份验证
- ssh - 在另一个出口点使用wireguard服务器和隧道出口流量
- scala - sbt 程序集重复数据删除:在以下位置找到不同的文件内容:jackson-annotations
- java - 如何通过不同的方法将相同的实体放入 EhCache