Sobes.tech
Middle

Hogyan hajtsunk végre hálózati kéréseket a Retrofit könyvtár segítségével?

sobes.tech MI

Válasz az MI-től

  1. Függőség hozzáadása: A build.gradle (app) fájlban.

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:<latest_version>'
    implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // vagy más konverter
    
  2. API interfész létrehozása: Határozd meg a metódusokat minden hálózati kéréshez.

    interface ApiService {
        @GET("users/{id}")
        Call<User> getUser(@Path("id") int userId);
    
        @POST("users")
        Call<User> createUser(@Body User user);
    }
    
    • @GET, @POST és más annotációk határozzák meg az HTTP metódus típusát.
    • "users/{id}" - relatív útvonal az erőforráshoz.
    • @Path, @Query, @Body - annotációk a kérés paramétereihez.
    • Call<T> - visszatérési típus aszinkron vagy szinkron kéréshez.
  3. Retrofit példány létrehozása: Állítsd be az alap URL-t és adj hozzá konvertert.

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create()) // Gson használata JSON elemzéséhez
        .build();
    
    ApiService apiService = retrofit.create(ApiService.class);
    
  4. Kérés végrehajtása: Aszinkron vagy szinkron módon.

    Aszinkron (ajánlott UI szálhoz):

    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();
                // Sikeres válasz feldolgozása
            } else {
                // Hiba válasz feldolgozása (pl. 404, 500)
            }
        }
    
        @Override
        public void onFailure(Call<User> call, Throwable t) {
            // Hálózati hiba vagy kivétel kezelése
        }
    });
    

    Szinkron (ne használd UI szálon):

    try {
        Response<User> response = apiService.getUser(123).execute();
        if (response.isSuccessful()) {
            User user = response.body();
            // Sikeres válasz feldolgozása
        } else {
            // Hiba válasz feldolgozása
        }
    } catch (IOException e) {
        // Hiba kezelése
    }
    
  5. Válasz feldolgozása: Az onResponse-ban vagy a sikeres execute után. Ellenőrizd a válasz státuszát (response.isSuccessful()) és szerezd meg az adatokat (response.body()). Kezeld a hibákat az onFailure-ben vagy a catch blokkban szinkron kérés esetén.

A Retrofit támogatja az integrációt korutinokkal (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava-val (retrofit2:adapter-rxjava) és más könyvtárakkal az aszinkron programozáshoz.