Skip to content

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.
Управления асинхронными запросами: Поддерживает выполнение сетевых вызовов в фоновом потоке, что позволяет избежать блокировки основного потока приложения.
Настройки параметров запросов: Позволяет легко добавлять заголовки, параметры и тело запроса.
  1. Пример использования 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();
            }
        });
    }
}

Объяснение кода:

  1. Интерфейс API: Определяет методы для выполнения HTTP-запросов. В данном случае метод getPosts() выполняет GET-запрос к /posts.
  2. Класс модели: Представляет структуру данных, которую мы ожидаем получить от API. В данном случае это класс Post, который содержит поля userId, id, title и body.
  3. Настройка Retrofit: Создаем экземпляр Retrofit, указывая базовый URL и конвертер для преобразования JSON в объекты Java.
  4. Выполнение запроса: Используем метод enqueue() для асинхронного выполнения запроса. В случае успешного ответа выводим заголовки постов в консоль.

Retrofit значительно упрощает работу с сетевыми запросами, позволяя разработчикам сосредоточиться на логике приложения, а не на деталях реализации HTTP-запросов.

[[Post и Get retrofit]] [[различия между методами POST и PUT]]

репозитарий

https://square.github.io/retrofit/

пример

https://gitlab.com/synergy9980417/razdel2/5_7