Middle
Jak provádět síťové požadavky pomocí knihovny Retrofit?
sobes.tech AI
Odpověď od AI
-
Přidat závislost: V souboru
build.gradle(app).// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // nebo jiný konvertor -
Vytvořit API rozhraní: Definovat metody pro každý síťový požadavek.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTa další anotace určují typ HTTP metody."users/{id}"- relativní cesta k zdroji.@Path,@Query,@Body- anotace pro parametry požadavku.Call<T>- typ vracené hodnoty pro asynchronní nebo synchronní požadavek.
-
Vytvořit instanci Retrofit: Nastavit základní URL a přidat konvertor.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Používáme Gson pro parsing JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Odeslat požadavek: Asynchronně nebo synchronně.
Asynchronně (doporučeno pro 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(); // Zpracování úspěšné odpovědi } else { // Zpracování chybové odpovědi (např. 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Zpracování chyby sítě nebo výjimky } });Synchronně (nepoužívat v UI vlákně):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Zpracování úspěšné odpovědi } else { // Zpracování chybové odpovědi } } catch (IOException e) { // Zpracování chyby } -
Zpracovat odpověď: V metodách
onResponsenebo po úspěšnémexecute. Zkontrolovat stav odpovědi (response.isSuccessful()) a získat data (response.body()). Zpracovat chyby vonFailurenebo v blokucatchpři synchronním požadavku.
Retrofit také podporuje integraci s coroutinami (pomocí retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (pomocí retrofit2:adapter-rxjava) a další knihovny pro asynchronní programování.