Jak wykonywać zapytania sieciowe za pomocą biblioteki Retrofit?
sobes.tech AI
Odpowiedź od AI
-
Dodaj zależność: W pliku
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // lub inny konwerter -
Utwórz interfejs API: Zdefiniuj metody dla każdego żądania sieciowego.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTi inne adnotacje określają typ metody HTTP."users/{id}"- ścieżka względna do zasobu.@Path,@Query,@Body- adnotacje dla parametrów żądania.Call<T>- typ zwracany dla asynchronicznych lub synchronicznych żądań.
-
Utwórz instancję Retrofit: Skonfiguruj URL bazowy i dodaj konwerter.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Używamy Gson do parsowania JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Wykonaj żądanie: Asynchronicznie lub synchronicznie.
Asynchronicznie (zalecane dla wątku 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(); // Obsługa udanej odpowiedzi } else { // Obsługa błędu odpowiedzi (np. 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Obsługa błędu sieci lub wyjątku } });Synchronicznie (nie używać w wątku UI):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Obsługa udanej odpowiedzi } else { // Obsługa błędu odpowiedzi } } catch (IOException e) { // Obsługa błędu } -
Obsłuż odpowiedź: W metodach
onResponselub po udanymexecute. Sprawdź status odpowiedzi (response.isSuccessful()) i wyciągnij dane (response.body()). Obsłuż błędy wonFailurelub w blokucatchdla żądania synchronicznego.
Retrofit obsługuje również integrację z korutynami (za pomocą retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (za pomocą retrofit2:adapter-rxjava) i innymi bibliotekami do programowania asynchronicznego.