Sobes.tech
Middle

Kako izvršiti mrežne zahteve koristeći biblioteku Retrofit?

sobes.tech АИ

Одговор од АИ

  1. 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
    
  2. 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, @POST i 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.
  3. 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);
    
  4. 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
    }
    
  5. Obraditi odgovor: U metodama onResponse ili nakon uspešnog execute. Proveriti status odgovora (response.isSuccessful()) i izvući podatke (response.body()). Obraditi greške u onFailure ili u bloku catch kod 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.