【问题标题】:OkHTTP3 Response Print IssueOkHTTP3 响应打印问题
【发布时间】:2020-11-01 23:08:13
【问题描述】:

所以我最近尝试使用 Java 做一些事情,但我发现了一个奇怪的问题。所以我这里有这段代码

Response response = client2.newCall(request).execute();

System.out.println(response.body().string());

JSONObject ir = new JSONObject(response.body().string());

System.out.println(ir);

Double low = ir.getDouble("CurrentLowestOfferPrice");

System.out.println("\nLOW = " + low);

我遇到的问题是第一个打印语句实际上与下一行中响应对象的分配混淆了,我无法获取 JSON 值。

谁能解释为什么会这样? (下图澄清。top是使用上面代码的sn-p运行的,bottom是删除第一个打印语句)

【问题讨论】:

  • 请在此处加上try、catch并添加跟踪

标签: java json okhttp


【解决方案1】:

您只能阅读正文一次。分配和重用。

Response response = client2.newCall(request).execute();

try {
  String s = response.body().string();
  System.out.println(s);

  JSONObject ir = new JSONObject(s);

  System.out.println(ir);

  Double low = ir.getDouble("CurrentLowestOfferPrice");

  System.out.println("\nLOW = " + low);
} finally {
  response.close();
}

【讨论】:

  • 非常感谢,这对您有很大帮助。 :) 只是一个简单的问题,为什么它只读取一次正文?是不是因为它是同步的而不是异步的?
  • 因为您正在消耗来自网络的潜在大量响应
  • 啊,太棒了,我以后会记录下来的。谢谢尤里 ^-^
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-07
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多