Hoe voer je netwerkverzoeken uit met behulp van de Retrofit-bibliotheek?
sobes.tech AI
Antwoord van AI
-
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 -
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,@POSTen 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.
-
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); -
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 } -
Verwerk antwoord: In
onResponseof na succesvolleexecute. Controleer de status van het antwoord (response.isSuccessful()) en haal de gegevens op (response.body()). Verwerk fouten inonFailureof in decatch-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.