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
-
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 -
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.
-
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); -
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 } -
Válasz feldolgozása: Az
onResponse-ban vagy a sikeresexecuteután. Ellenőrizd a válasz státuszát (response.isSuccessful()) és szerezd meg az adatokat (response.body()). Kezeld a hibákat azonFailure-ben vagy acatchblokkban 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.