Kaip atlikti tinklo užklausas naudojant Retrofit biblioteką?
sobes.tech AI
Atsakymas iš AI
-
Pridėti priklausomybę:
build.gradle(app) faile.// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // arba kitas konverteris -
Sukurti API sąsają: Apibrėžti metodus kiekvienam tinklo užklausai.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTir kitos anotacijos nurodo HTTP metodo tipą."users/{id}"- santykinis kelias prie ištekliaus.@Path,@Query,@Body- anotacijos užklausos parametrams.Call<T>- grąžinamas tipas asinchroninei arba sinchroninei užklausai.
-
Sukurti Retrofit pavyzdį: Nustatyti bazinį URL ir pridėti konverterį.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Naudojame Gson JSON analizavimui .build(); ApiService apiService = retrofit.create(ApiService.class); -
Siųsti užklausą: Asinchroniškai arba sinchroniškai.
Asinchroniškai (rekomenduojama UI srautui):
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(); // Sėkmingo atsakymo apdorojimas } else { // Klaidos apdorojimas (pvz., 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Tinklo klaidos arba išimties apdorojimas } });Sinchroniškai (ne naudoti UI sraute):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Sėkmingo atsakymo apdorojimas } else { // Klaidos apdorojimas } } catch (IOException e) { // Klaidos apdorojimas } -
Apdoroti atsakymą:
onResponsearba po sėkmingoexecute. Patikrinti atsakymo būseną (response.isSuccessful()) ir gauti duomenis (response.body()). Apdoroti klaidasonFailurearbacatchblokuose sinchroniniame užklausoje.
Retrofit taip pat palaiko integraciją su korutinomis (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (retrofit2:adapter-rxjava) ir kitomis bibliotekomis asinchroniniam programavimui.