Ako vykonávať sieťové požiadavky pomocou knižnice Retrofit?
sobes.tech AI
Odpoveď od AI
-
Pridať závislosť: V súbore
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // alebo iný konvertor -
Vytvoriť API rozhranie: Definovať metódy pre každý sieťový požiadavok.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTa ďalšie anotácie určujú typ HTTP metódy."users/{id}"- relatívna cesta k zdroju.@Path,@Query,@Body- anotácie pre parametre požiadavky.Call<T>- typ vracanej hodnoty pre asynchrónnu alebo synchronnú požiadavku.
-
Vytvoriť inštanciu Retrofit: Nastaviť základný URL a pridať konvertor.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Používame Gson pre parsing JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Odoslať požiadavku: Asynchrónne alebo synchronne.
Asynchrónne (odporúča sa pre UI vlákno):
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(); // Spracovanie úspešnej odpovede } else { // Spracovanie chyby odpovede (napr. 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Spracovanie chyby siete alebo výnimky } });Synchronne (nepoužívať v UI vlákne):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Spracovanie úspešnej odpovede } else { // Spracovanie chyby odpovede } } catch (IOException e) { // Spracovanie chyby } -
Spracovať odpoveď: V metódach
onResponsealebo po úspešnomexecute. Skontrolovať stav odpovede (response.isSuccessful()) a získať dáta (response.body()). Spracovať chyby vonFailurealebo v blokucatchpri synchronnej požiadavke.
Retrofit tiež podporuje integráciu s korutinami (pomocou retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (pomocou retrofit2:adapter-rxjava) a ďalšími knižnicami pre asynchrónne programovanie.