Ошибка печати ответа OkHTTP3 - PullRequest
0 голосов
/ 12 июля 2020

Итак, я недавно попытался сделать что-то, используя 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 .

Кто-нибудь может объяснить, почему это происходит? (Изображение ниже для пояснения. Верх запускается с использованием фрагмента кода выше, снизу удаляется первая инструкция печати)

Верхняя - ошибка, нижняя - правильная.

1 Ответ

0 голосов
/ 12 июля 2020

Вы можете прочитать тело только один раз. Назначить и использовать повторно.

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();
}
...