Sobes.tech
Middle

Wie führt man Netzwerkanfragen mit der Retrofit-Bibliothek aus?

sobes.tech KI

Antwort von AI

  1. Abhängigkeit hinzufügen: In build.gradle (app).

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:<latest_version>'
    implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // oder ein anderer Konverter
    
  2. API-Schnittstelle erstellen: Methoden für jede Netzwerk-Anfrage definieren.

    interface ApiService {
        @GET("users/{id}")
        Call<User> getUser(@Path("id") int userId);
    
        @POST("users")
        Call<User> createUser(@Body User user);
    }
    
    • @GET, @POST und andere Annotations definieren den HTTP-Methodentyp.
    • "users/{id}" - relativer Pfad zur Ressource.
    • @Path, @Query, @Body - Annotations für Anfrageparameter.
    • Call<T> - Rückgabetyp für asynchrone oder synchrone Anfragen.
  3. Retrofit-Instanz erstellen: Basis-URL konfigurieren und Konverter hinzufügen.

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create()) // Gson für JSON-Parsing
        .build();
    
    ApiService apiService = retrofit.create(ApiService.class);
    
  4. Anfrage ausführen: Asynchron oder synchron.

    Asynchron (empfohlen für 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();
                // Erfolgreiche Antwort verarbeiten
            } else {
                // Fehler in der Antwort verarbeiten (z.B. 404, 500)
            }
        }
    
        @Override
        public void onFailure(Call<User> call, Throwable t) {
            // Netzwerkfehler oder Ausnahme verarbeiten
        }
    });
    

    Synchron (nicht im UI-Thread verwenden):

    try {
        Response<User> response = apiService.getUser(123).execute();
        if (response.isSuccessful()) {
            User user = response.body();
            // Erfolgreiche Antwort verarbeiten
        } else {
            // Fehler in der Antwort verarbeiten
        }
    } catch (IOException e) {
        // Fehler verarbeiten
    }
    
  5. Antwort verarbeiten: In onResponse oder nach erfolgreichem execute. Status der Antwort (response.isSuccessful()) prüfen und Daten (response.body()) extrahieren. Fehler in onFailure oder im catch-Block behandeln.

Retrofit unterstützt auch die Integration mit Coroutines (mit retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (mit retrofit2:adapter-rxjava) und anderen Bibliotheken für asynchrone Programmierung.