Retrofit

Retrofit é uma biblioteca popular do Android que facilita o processo de fazer solicitações de rede em aplicativos Android. Ele é especialmente útil para consumir APIs RESTful, permitindo que você envie solicitações HTTP e receba respostas de forma fácil e eficiente. Vamos explorar como usar o Retrofit para realizar operações de rede em um aplicativo Android.

1. Adicionando a Dependência Retrofit

Primeiro, adicione a dependência Retrofit no arquivo build.gradle do seu módulo de aplicativo:

implementation 'com.squareup.retrofit2:retrofit:2.9.0'

2. Definindo uma Interface de API

Crie uma interface que define as operações da API. Por exemplo:

public interface ApiService {
    @GET("posts/{id}")
    Call<Post> getPost(@Path("id") int postId);

    @GET("posts")
    Call<List<Post>> getPosts();
}

Neste exemplo, Post é uma classe de modelo que representa um post na API.

3. Configurando o Cliente Retrofit

Configure um objeto Retrofit usando a URL base da API e a interface ApiService:

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://jsonplaceholder.typicode.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .build();

ApiService apiService = retrofit.create(ApiService.class);

4. Fazendo Solicitações de Rede

Agora você pode usar apiService para fazer solicitações de rede. Por exemplo, para obter um post por ID:

Call<Post> call = apiService.getPost(1);

call.enqueue(new Callback<Post>() {
    @Override
    public void onResponse(Call<Post> call, Response<Post> response) {
        if (response.isSuccessful()) {
            Post post = response.body();
            // Faça algo com o post
        } else {
            // Trate erros de solicitação não bem-sucedidos
        }
    }

    @Override
    public void onFailure(Call<Post> call, Throwable t) {
        // Trate falhas na solicitação
    }
});

5. Adicionando Interceptadores e Conversores

O Retrofit permite que você adicione interceptadores para manipular solicitações e respostas. Além disso, você pode adicionar conversores para processar a resposta antes de ser manipulada pelo código.

OkHttpClient client = new OkHttpClient.Builder()
    .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) // Logging das solicitações
    .build();

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://jsonplaceholder.typicode.com/")
    .addConverterFactory(GsonConverterFactory.create())
    .client(client)
    .build();

6. Trabalhando com Métodos HTTP

O Retrofit suporta vários métodos HTTP, incluindo GET, POST, PUT, DELETE, etc. Você pode usá-los na sua interface de API, por exemplo:

public interface ApiService {
    @POST("posts")
    Call<Post> createPost(@Body Post post);

    @PUT("posts/{id}")
    Call<Post> updatePost(@Path("id") int postId, @Body Post post);

    @DELETE("posts/{id}")
    Call<Void> deletePost(@Path("id") int postId);
}

O Retrofit é uma ferramenta poderosa para trabalhar com APIs em aplicativos Android. Ele fornece uma maneira simples e eficaz de fazer solicitações de rede e manipular dados JSON. Lembre-se de lidar com os casos de erro adequadamente e sempre realizar operações de rede em uma thread separada para evitar bloqueios no thread principal do aplicativo.