Creare un client REST in Android con Retrofit

Mattepuffo's logo
Creare un client REST in Android con Retrofit

Creare un client REST in Android con Retrofit

Di librerie HTTP per Android ce ne stanno diverse; ultimamente mi sono imbattuto in Retrofit, e devo dire che mi son trovato bene.

Noi vedremo un esempio in Java; non so se è disponibile anche per Kotlin.

Come servizio REST useremo questo: https://jsonplaceholder.typicode.com/users.

Questo sito crea servizi fake per fare test; cominciamo con l'installare la libreria.

Nel vostro file gradle aggiungete queste dipendenze:

dependencies {
    .....................
    implementation 'com.squareup.retrofit2:retrofit:2.5.0'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
}

La seconda ci serve per il parsing del JSON.

Questa la nostra classe POJO:

public class User {
    public String id;
    public String username;
    public String email;
}

Prende solo una piccola parte dei dati del servizio REST:

Questa la nostra interfaccia, che contiente i vari metodi per l'interrogazione del servizio (nel mio caso solo uno):

import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;

public interface UserService {
    @GET("users")
    Call<List<User>> getUsers();
}

Molto importante è l'annotazione, nella quale indichiamo quale servizio prendere dall'url; infatti, come vedrete dopo, la libreria richiede un url base, al quale aggiungerà in automatico il servizio prendendolo dalla annotazione.

Infine la nostra Activity:

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

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

        us.getUsers().enqueue(new Callback<List<User>>() {
            @Override
            public void onResponse(Call<List<User>> call, Response<List<User>> response) {
                System.out.println("OK");
                List<User> list = response.body();
                for (User u : list) {
                    System.out.println(u.username);
                }
            }

            @Override
            public void onFailure(Call<List<User>> call, Throwable t) {
                System.out.println("KO");
            }
        });
    }

}

Noi abbiamo usato i metodi asincroni.

Enjoy!


Condividi

Commentami!