Come eseguire richieste di rete utilizzando la libreria Retrofit?
sobes.tech AI
Risposta dell'AI
-
Aggiungi dipendenza: Nel file
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // o un altro convertitore -
Crea interfaccia API: Definisci metodi per ogni richiesta di rete.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTe altre annotazioni definiscono il tipo di metodo HTTP."users/{id}"- percorso relativo alla risorsa.@Path,@Query,@Body- annotazioni per i parametri della richiesta.Call<T>- tipo di ritorno per richieste asincrone o sincrone.
-
Crea istanza di Retrofit: Configura URL di base e aggiungi un convertitore.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Usare Gson per il parsing JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Esegui richiesta: In modo asincrono o sincrono.
Asincrono (consigliato per il thread UI):
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(); // Gestisci risposta di successo } else { // Gestisci errore di risposta (ad esempio, 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Gestisci errore di rete o eccezione } });Sincrono (non usare nel thread UI):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Gestisci risposta di successo } else { // Gestisci errore di risposta } } catch (IOException e) { // Gestisci errore } -
Gestisci risposta: Nei metodi
onResponseo dopoexecutedi successo. Verifica lo stato della risposta (response.isSuccessful()) e estrai i dati (response.body()). Gestisci gli errori inonFailureo nel bloccocatchper richiesta sincrona.
Retrofit supporta anche l'integrazione con le coroutine (con retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (con retrofit2:adapter-rxjava) e altre librerie per la programmazione asincrona.