Cum se realizează solicitări de rețea folosind biblioteca Retrofit?
sobes.tech AI
Răspuns de la AI
-
Adaugă dependența: În
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // sau alt convertor -
Creează interfața API: Definește metode pentru fiecare solicitare de rețea.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTși alte adnotări definesc tipul metodei HTTP."users/{id}"- calea relativă către resursă.@Path,@Query,@Body- adnotări pentru parametrii solicitării.Call<T>- tipul de returnare pentru solicitări asincrone sau sincrone.
-
Creează instanța Retrofit: Configurează URL-ul de bază și adaugă un convertor.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Folosește Gson pentru parsing JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Execută solicitarea: Asincron sau sincronic.
Asincron (recomandat pentru firul 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(); // Procesează răspunsul de succes } else { // Procesează eroarea de răspuns (ex. 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Procesează eroarea de rețea sau excepția } });Sincronic (nu folosi în firul UI):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Procesează răspunsul de succes } else { // Procesează eroarea de răspuns } } catch (IOException e) { // Procesează eroarea } -
Procesează răspunsul: În metodele
onResponsesau dupăexecutede succes. Verifică starea răspunsului (response.isSuccessful()) și extrage datele (response.body()). Gestionează erorile înonFailuresau în bloculcatchpentru solicitări sincrone.
Retrofit suportă, de asemenea, integrarea cu corutine (cu retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (cu retrofit2:adapter-rxjava) și alte biblioteci pentru programare asincronă.