retrofit2Aan de slag met retrofit2


Opmerkingen

Overzicht :

Retrofit : Type-veilige HTTP-client voor Android en Java door Square, Inc.

GitHub Repo: https://github.com/square/retrofit

Het is een van de meest gebruikte netwerkbibliotheken in Android. Door zijn ontwerp is het zeer flexibel van aard en biedt een breed scala aan plug and play-functies zoals ondersteuning voor verschillende Json Parser zoals GSON, Jackson, moshi, ondersteuning voor Rx-Java, enz.

versies

Versie Publicatiedatum
2.3.0 2017/05/13
2.2.0 2017/02/21
2.1.0 2016/06/15

Opstelling

Wat is retrofit?

De officiële Retrofit-pagina beschrijft zichzelf als:

Een typeveilige REST-client voor Android en Java.

Deze bibliotheek maakt het downloaden van JSON- of XML- gegevens van een web-API vrij eenvoudig. Nadat de gegevens zijn gedownload, worden deze met behulp van de hier vermelde adapter / parser in een gewoon oud Java-object (POJO) gedefinieerd dat voor elke aanvraag is gedefinieerd.

Voor de demo zouden we GSON parser gebruiken

Instellen :

  1. Voeg internetmachtiging toe in manifest.xml:
 <uses-permission android:name="android.permission.INTERNET" />
 
  1. Voeg het volgende toe aan uw build.gradle bestand:
dependencies {
    compile 'com.squareup.retrofit2:retrofit:2.1.0'
    compile 'com.squareup.retrofit2:converter-gson:2.1.0'  
}
 
  1. Maak de juiste POJO (Model) op basis van uw Json- reactie:

    Als uw json-reactie 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;"
        }
    }
}
 

Vervolgens kunt u een website zoals JsonOnlineEditor of JsonView gebruiken om uw json te formatteren die u helpt bij het maken van uw model. Of gebruik jsonschema2pojo om uw Json naar POJO te converteren met GSON- annotaties:

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

    @SerializedName("window")
    private Window window;

    @SerializedName("image")
    private Image image;

    @SerializedName("text")
    private Text text;
}
 
  1. Dan hebben we een exemplaar van Retrofit nodig dat fungeert als controller voor alle verzoeken en antwoorden.

    Opmerking: we maken deze controller bij voorkeur als singleton, wat erg handig is als we wat extra eigenschappen van de client willen instellen.

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

Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
 
  1. Maak vervolgens de interfaceklasse waar alle API-oproepen met verzoek, antwoordtype en verzoekparameters voor elke oproep worden gedefinieerd (we moeten een interface maken voor het beheren van url-oproepen zoals GET , POST ..etc.)
public interface IPlusService {
    @GET("/api/category")
    Call<CategoryModel> getAllCategory();
}
 
  1. Maak een netwerk / client aan met retrofit-instantie:
IPlusService requestClient = retrofit.create(IPlusService.class);
 
  1. Bel uw webservice in uw 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 
    }
});
 

Goede middelen:

  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