Middle
Kako izvršiti mrežne zahteve koristeći biblioteku Retrofit?
sobes.tech АИ
Одговор од АИ
-
Dodajte zavisnost: U
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // ili drugi konvertor -
Kreirajte API interfejs: Definisati metode za svaku mrežnu zahtev.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTi druge anotacije određuju tip HTTP metode."users/{id}"- relativni put do resursa.@Path,@Query,@Body- anotacije za parametre zahteva.Call<T>- tip vraćene vrednosti za asinhroni ili sinhroni zahtev.
-
Kreirajte Retrofit instancu: Podesite osnovni URL i dodajte konvertor.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Koristimo Gson za parsiranje JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Pošaljite zahtev: Asinhrono ili sinhrono.
Asinhrono (preporučuje se za UI nit):
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(); // Obrada uspešnog odgovora } else { // Obrada greške odgovora (npr. 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Obrada greške mreže ili izuzetka } });Sinhrono (ne koristiti u UI niti):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Obrada uspešnog odgovora } else { // Obrada greške odgovora } } catch (IOException e) { // Obrada greške } -
Obraditi odgovor: U metodama
onResponseili nakon uspešnogexecute. Proveriti status odgovora (response.isSuccessful()) i izvući podatke (response.body()). Obraditi greške uonFailureili u blokucatchkod sinhronog zahteva.
Retrofit takođe podržava integraciju sa korutinama (pomoću retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (pomoću retrofit2:adapter-rxjava) i drugim bibliotekama za asinhrono programiranje.