Sobes.tech
Middle

Hoe voer je netwerkverzoeken uit met behulp van de Retrofit-bibliotheek?

sobes.tech AI

Antwoord van AI

  1. Voeg afhankelijkheid toe: In build.gradle (app).

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:<latest_version>'
    implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // of een andere converter
    
  2. Maak API-interface: Definieer methoden voor elke netwerkverzoek.

    interface ApiService {
        @GET("users/{id}")
        Call<User> getUser(@Path("id") int userId);
    
        @POST("users")
        Call<User> createUser(@Body User user);
    }
    
    • @GET, @POST en andere annotaties bepalen het HTTP-methode type.
    • "users/{id}" - relatieve pad naar de bron.
    • @Path, @Query, @Body - annotaties voor requestparameters.
    • Call<T> - returntype voor asynchrone of synchrone verzoeken.
  3. Maak Retrofit-instantie: Stel de basis-URL in en voeg een converter toe.

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create()) // Gebruik Gson voor JSON-parsing
        .build();
    
    ApiService apiService = retrofit.create(ApiService.class);
    
  4. Voer verzoek uit: Asynchroon of synchroon.

    Asynchroon (aanbevolen voor UI-thread):

    Call<User> call = apiService.getUser(123);
    call.enqueue(new Callback<User>() {
        @Override
        public void onResponse(Call<User> call, Response<User> response) {
            if (response.isSuccessful()) {
                User user = response.body();
                // Verwerk succesvolle reactie
            } else {
                // Verwerk fout reactie (bijv. 404, 500)
            }
        }
    
        @Override
        public void onFailure(Call<User> call, Throwable t) {
            // Verwerk netwerkfout of uitzondering
        }
    });
    

    Synchroon (niet gebruiken in UI-thread):

    try {
        Response<User> response = apiService.getUser(123).execute();
        if (response.isSuccessful()) {
            User user = response.body();
            // Verwerk succesvolle reactie
        } else {
            // Verwerk fout reactie
        }
    } catch (IOException e) {
        // Verwerk fout
    }
    
  5. Verwerk antwoord: In onResponse of na succesvolle execute. Controleer de status van het antwoord (response.isSuccessful()) en haal de gegevens op (response.body()). Verwerk fouten in onFailure of in de catch-blok bij synchrone verzoeken.

Retrofit ondersteunt ook integratie met coroutines (met retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (met retrofit2:adapter-rxjava) en andere bibliotheken voor asynchrone programmering.