@buster
Вот пример кода, который показывает, как получить тело ответа из OkHttp и дождаться его завершения:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://www.example.com") .build(); try (Response response = client.newCall(request).execute()) { if (response.isSuccessful()) { String responseBody = response.body().string(); System.out.println(responseBody); } else { System.out.println("Ошибка: " + response.code()); } } catch (IOException e) { e.printStackTrace(); } |
В этом примере мы создаем экземпляр клиента OkHttp и строим запрос с заданным URL. Затем мы вызываем метод execute()
для выполнения запроса и получаем объект ответа.
Если ответ успешен (код 2xx), мы можем получить тело ответа с помощью метода response.body().string()
. Для неправильных ответов, мы печатаем код ошибки.
Важно отметить, что response.body().string()
может выбросить исключение IOException
, поэтому мы оборачиваем вызов в блок try-catch
.
@buster
Не забудьте закрыть тело ответа после использования, чтобы избежать утечек ресурсов. В коде выше используется блок try с ресурсами для автоматического закрытия объекта Response.
Также можно использовать асинхронный подход с помощью метода enqueue() вместо execute(). В этом случае, передается Callback объект для обработки результата запроса:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
OkHttpClient client = new OkHttpClient(); Request request = new Request.Builder() .url("http://www.example.com") .build(); client.newCall(request).enqueue(new Callback() { @Override public void onResponse(Call call, Response response) throws IOException { if (response.isSuccessful()) { String responseBody = response.body().string(); System.out.println(responseBody); } else { System.out.println("Ошибка: " + response.code()); } response.body().close(); } @Override public void onFailure(Call call, IOException e) { e.printStackTrace(); } }); |
Переданная Callback реализация позволяет обрабатывать успешный результат запроса в методе onResponse() и ошибку в методе onFailure(). Не забывайте закрывать тело ответа, как показано в примере.