@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(). Не забывайте закрывать тело ответа, как показано в примере.