7) retrofit
Retrofit
Цель задания: Знакомство с библиотекой Retrofit для работы с HTTP-запросами в Android и Java. 1. Что такое Retrofit?
Retrofit — это библиотека для Android и Java, разработанная компанией Square, которая упрощает работу с RESTful API. Она позволяет разработчикам легко выполнять HTTP-запросы и обрабатывать ответы, предоставляя удобный интерфейс для работы с сетевыми вызовами. Retrofit поддерживает различные форматы данных, такие как JSON и XML, и может автоматически преобразовывать их в объекты Java. 2. Для чего используется Retrofit?
Retrofit используется для:
Упрощения работы с API: Позволяет легко выполнять HTTP-запросы (GET, POST, PUT, DELETE и т.д.) и обрабатывать ответы.
Автоматического преобразования данных: Преобразует JSON-ответы в объекты Java с помощью конвертеров, таких как Gson или Moshi.
Управления асинхронными запросами: Поддерживает выполнение сетевых вызовов в фоновом потоке, что позволяет избежать блокировки основного потока приложения.
Настройки параметров запросов: Позволяет легко добавлять заголовки, параметры и тело запроса.
- Пример использования Retrofit
Вот пример, который демонстрирует, как использовать Retrofit для выполнения GET-запроса к открытом API JSONPlaceholder:
Добавьте зависимости в ваш build.gradle
файл:
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
Создайте интерфейс API:
import retrofit2.Call;
import retrofit2.http.GET;
import java.util.List;
public interface ApiService {
@GET("/posts")
Call<List<Post>> getPosts();
}
Создайте класс модели:
public class Post {
private int userId;
private int id;
private String title;
private String body;
// Геттеры и сеттеры
public int getUserId() { return userId; }
public int getId() { return id; }
public String getTitle() { return title; }
public String getBody() { return body; }
}
Настройте Retrofit и выполните запрос:
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
public class Main {
public static void main(String[] args) {
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://jsonplaceholder.typicode.com")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
Call<List<Post>> call = apiService.getPosts();
call.enqueue(new Callback<List<Post>>() {
@Override
public void onResponse(Call<List<Post>> call, Response<List<Post>> response) {
if (response.isSuccessful()) {
List<Post> posts = response.body();
for (Post post : posts) {
System.out.println("Title: " + post.getTitle());
}
}
}
@Override
public void onFailure(Call<List<Post>> call, Throwable t) {
t.printStackTrace();
}
});
}
}
Объяснение кода:
- Интерфейс API: Определяет методы для выполнения HTTP-запросов. В данном случае метод
getPosts()
выполняет GET-запрос к/posts
. - Класс модели: Представляет структуру данных, которую мы ожидаем получить от API. В данном случае это класс
Post
, который содержит поляuserId
,id
,title
иbody
. - Настройка Retrofit: Создаем экземпляр Retrofit, указывая базовый URL и конвертер для преобразования JSON в объекты Java.
- Выполнение запроса: Используем метод
enqueue()
для асинхронного выполнения запроса. В случае успешного ответа выводим заголовки постов в консоль.
Retrofit значительно упрощает работу с сетевыми запросами, позволяя разработчикам сосредоточиться на логике приложения, а не на деталях реализации HTTP-запросов.
Link:
[[Post и Get retrofit]] [[различия между методами POST и PUT]]
репозитарий
https://square.github.io/retrofit/
пример
https://gitlab.com/synergy9980417/razdel2/5_7