Wie führt man Netzwerkanfragen mit der Retrofit-Bibliothek aus?
sobes.tech KI
Antwort von AI
-
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 -
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,@POSTund 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.
-
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); -
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 } -
Antwort verarbeiten: In
onResponseoder nach erfolgreichemexecute. Status der Antwort (response.isSuccessful()) prüfen und Daten (response.body()) extrahieren. Fehler inonFailureoder imcatch-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.