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!




Share

Commentami!

About Mattepuffo.com

Blog dedicato all'informatica e alla programmazione!
Tutti i contenuti di questo blog, tranne casi particolari, sono sotto licenza Licenza Creative Commons Creative Commons Attribution-Noncommercial-Share Alike 2.5. .

2664 articoli
310 commenti
19 progetti
Altri link
  • About
  • Scrivimi
  • Copyright
  • Sitemap
  • matteo.ferrone@yahoo.it
  • GitHub
  • Privacy Policy