Приклад підручника OkHttp Android
OkHttp — це клієнт HTTP для Android, який надає синхронні та асинхронні інтерфейси для створення та здійснення HTTP-запитів. Окрім основної функціональності HTTP, OkHttp також пропонує ряд додаткових функцій, таких як кешування, перехоплення та підтримка WebSocket.
У цьому посібнику ми розглянемо, як використовувати OkHttp для надсилання HTTP-запитів у додатках Android. Ми почнемо з основного прикладу, а потім перейдемо до більш складних тем, таких як кешування та перехоплення.
Основний приклад
Створити HTTP-запит за допомогою OkHttp дуже просто. Ви можете використовувати наступний код для надсилання GET-запиту до веб-сайту:
java
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
Response response = client.newCall(request).execute();
Цей код створює клієнта OkHttp, створює об’єкт запиту за допомогою заданої URL-адреси та виконує запит за допомогою методу execute()
. Результатом запиту є об’єкт Response
, який містить заголовки відповіді, код стану та текст відповіді (якщо є).
Асинхронні запити
За замовчуванням OkHttp виконує HTTP-запити синхронно, що означає, що запит заблокує потік, який його викликав, доки відповідь не буде отримана. Однак ви також можете налаштувати OkHttp для виконання запитів асинхронно, використовуючи метод enqueue()
.
Метод enqueue()
приймає зворотний виклик, який буде викликано після отримання відповіді. У наступному коді показано, як надсилати асинхронний GET-запит:
java
import okhttp3.Callback;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://example.com")
.build();
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
// Обробка помилки тут
}
@Override
public void onResponse(Call call, Response response) throws IOException {
// Обробка відповіді тут
}
});
У цьому коді метод enqueue()
запускає новий потік і повертає відразу. Зворотний виклик викликається в новому потоці після отримання відповіді.
Кешування
OkHttp може автоматично кешувати відповіді HTTP, щоб зменшити кількість мережевих запитів, необхідних для отримання даних. Кешування може значно покращити продуктивність вашого додатку, особливо якщо він отримує дані з повільних мереж.
Щоб увімкнути кешування, ви можете налаштувати клієнт OkHttp за допомогою об’єкта Cache
:
java
import java.io.File;
OkHttpClient client = new OkHttpClient.Builder()
.cache(new Cache(new File("/tmp/okhttp-cache"), 10 1024 1024))
.build();
У цьому коді кеш зберігатиметься у файлі /tmp/okhttp-cache
з максимальним розміром 10 МБ.
Перехоплення
Перехоплення — це об’єкти, які можуть бути вставлені в стек виклику OkHttp для перехоплення та модифікації HTTP-запитів та відповідей. Перехоплення можуть використовуватися для різних цілей, наприклад, для додавання заголовків авторизації, перевірки квот або налаштування відповіді.
Щоб додати перехоплення до клієнта OkHttp, ви можете використовувати метод addInterceptor()
:
java
import okhttp3.Interceptor;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// Додайте заголовок авторизації до запиту
Request newRequest = request.newBuilder()
.addHeader("Authorization", "Bearer <token>")
.build();
return chain.proceed(newRequest);
}
})
.build();
У цьому коді перехоплення додається до кінця стека викликів OkHttp. Перехоплення отримує об’єкт Chain
, який містить поточний запит і методи для продовження стека викликів. Перехоплення модифікує запит, додаючи заголовок авторизації, а потім передає модифікований запит на наступний перехоплення або остаточну обробку.
Висновок
OkHttp є потужним і гнучким клієнтом HTTP для Android. Він пропонує широкий спектр функцій, які дозволяють вам надсилати HTTP-запити, кешувати відповіді та налаштовувати запити та відповіді за допомогою перехоплень.
Використання OkHttp у ваших додатках Android може значно покращити їхню продуктивність і функціональність. Він спрощує надсилання HTTP-запитів, дозволяє використовувати кешування для зменшення затримки та надає потужний механізм перехоплення для налаштування поведінки HTTP.
Поширені запитання
Що таке OkHttp?
OkHttp — це клієнт HTTP для Android, який надає синхронні та асинхронні інтерфейси для створення та здійснення HTTP-запитів.
Як надсилати HTTP-запити за допомогою OkHttp?
Щоб надсилати HTTP-запити за допомогою OkHttp, ви можете створити клієнт OkHttp, створити об’єкт запиту і виконати запит за допомогою методу execute()
.
Чи можна використовувати OkHttp для асинхронних запитів?
Так, ви можете використовувати метод enqueue()
для надсилання асинхронних HTTP-запитів. Зворотний виклик, переданий методу enqueue()
, буде викликано після отримання відповіді.
Що таке кешування?
Кешування — це процес зберігання даних у швидкому сховищі для майбутнього використання. OkHttp може кешувати відповіді HTTP, щоб зменшити кількість мережевих запитів, необхідних для отримання даних.
Як увімкнути кешування в OkHttp?
Щоб увімкнути кешування в OkHttp, ви можете налаштувати клієнт OkHttp за допомогою об’єкта Cache
.
Що таке перехоплення?
Перехоплення — це об’єкти, які можна вставити в стек виклику OkHttp для перехоплення та модифікації HTTP-запитів і відповідей. Перехоплення можуть використовуватися для різних цілей, наприклад, для додавання заголовків авторизації або налаштування відповіді.
Як додати перехоплення до клієнта OkHttp?
Щоб додати перехоплення до клієнта OkHttp, ви можете використовувати метод addInterceptor()
. Перехоплення отримує об’єкт Chain
, який містить поточний запит і методи для продовження стека викликів.
Як кешування допомагає покращити продуктивність додатків?
Кешування допомагає покращити продуктивність додатків за рахунок зменшення кількості мережевих запитів, необхідних для отримання даних. Це особливо корисно для додатків, які отримують дані з повільних мереж.
Як перехоплення допомагають налаштувати поведінку HTTP?
Перехоплення дозволяють розробникам налаштувати поведінку HTTP для своїх додатків. Вони можуть бути використані для додавання заголовків авторизації, перевірки квот або налаштування відповіді.