Premiers pas avec la rénovation2

Installer

Qu’est-ce que la rénovation ?

La [page officielle Retrofit][1] se décrit comme :

Un client REST de type sécurisé pour Android et Java.

Cette bibliothèque facilite le téléchargement de données JSON ou XML à partir d’une API Web. Une fois les données téléchargées, elles sont analysées dans un objet POJO (Plain Old Java Object) défini pour chaque requête à l’aide de l’un des adaptateurs/analyseurs répertoriés [ici][2].

À des fins de démonstration, nous utiliserions l’analyseur [GSON][3]

Installer:

  1. Ajoutez une autorisation Internet dans manifest.xml :
 <uses-permission android:name="android.permission.INTERNET" />
  1. Ajoutez ce qui suit à votre fichier build.gradle :
dependencies {
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'  
}
  1. Créez un POJO (modèle) approprié en fonction de votre réponse Json :

    If your json response is:

{
    "CategoryModel": {
        "debug": "on",
        "window": {
            "title": "Sample Konfabulator Widget",
            "name": "main_window",
            "width": 500,
            "height": 500
        },
        "image": {
            "src": "Images/Sun.png",
            "name": "sun1",
            "hOffset": 250,
            "vOffset": 250,
            "alignment": "center"
        },
        "text": {
            "data": "Click Here",
            "size": 36,
            "style": "bold",
            "name": "text1",
            "hOffset": 250,
            "vOffset": 100,
            "alignment": "center",
            "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;"
        }
    }
}

Ensuite, vous pouvez utiliser un site Web comme [JsonOnlineEditor][4] ou [JsonView][5] pour formater votre json qui vous aidera à créer votre modèle Ou utiliser [jsonschema2pojo][6] pour convertir votre Json en POJO en utilisant [GSON][3 ] annotations :

public class CategoryModel {
   
    @SerializedName("debug")
    private String debug;

    @SerializedName("window")
    private Window window;

    @SerializedName("image")
    private Image image;

    @SerializedName("text")
    private Text text;
}
  1. Ensuite, nous avons besoin d’une instance de Retrofit qui agit en tant que contrôleur pour toutes les requêtes et réponses.

    Note : We prefer to create this controller as singleton which is very helpful if we want to set some additional property of the client .

public static final String BASE_URL = "http://test.com"

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
  1. Créez ensuite la classe Interface où définissez tous les appels API avec la demande, le type de réponse et les paramètres de demande pour chaque appel. (Nous devons créer une interface pour gérer les appels d’URL tels que GET,POST..etc. )
public interface IPlusService {
    @GET("/api/category")
    Call<CategoryModel> getAllCategory();
}
  1. Créer un client réseau/requête avec une instance de mise à niveau :
IPlusService requestClient = retrofit.create(IPlusService.class);
  1. Appelez votre service Web dans votre Fragment/Activity :
requestClient.getAllCategory().enqueue(new Callback<ResponseBody>() {
    @Override
    public void onResponse(Call<CategoryModel> call, Response<CategoryModel> response) {
        // DO success handling 
    }

    @Override
    public void onFailure(Call<CategoryModel> call, Throwable t) {
        // DO failure handling 
    }
});

Bonnes ressources :

  1. https://github.com/codepath/android_guides/wiki/Consuming-APIs-with-Retrofit

  2. http://www.vogella.com/tutorials/Retrofit/article.html

  3. http://www.androidhive.info/2016/05/android-working-with-retrofit-http-library/

  4. https://futurestud.io/tutorials/retrofit-getting-started-and-android-client

[1] : https://square.github.io/retrofit/ [2] : https://github.com/square/retrofit/tree/master/retrofit-converters [3] : https://github.com/google/gson [4] : http://www.jsoneditoronline.org [5] : http://jsonviewer.stack.hu/ [6] : http://www.jsonschema2pojo.org/