Middle
Kā veikt tīkla pieprasījumus, izmantojot Retrofit bibliotēku?
sobes.tech AI
Atbilde no AI
-
Pievienot atkarību:
build.gradle(app) failā.// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // vai cits konvertētājs -
Izveidot API interfeisu: Definēt metodes katram tīkla pieprasījumam.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTun citas anotācijas nosaka HTTP metodes tipu."users/{id}"- relatīvais ceļš resursam.@Path,@Query,@Body- anotācijas pieprasījuma parametriem.Call<T>- atgriežamais tips asinhronai vai sinhronai pieprasījumam.
-
Izveidot Retrofit piemēru: Iestatīt bāzes URL un pievienot konvertētāju.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Izmantojam Gson JSON parsēšanai .build(); ApiService apiService = retrofit.create(ApiService.class); -
Nosūtīt pieprasījumu: Asinhroni vai sinhroni.
Asinhroni (ieteicams UI plūsmai):
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(); // Apstrādāt veiksmīgu atbildi } else { // Apstrādāt kļūdas atbildi (piem., 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Tīkla kļūdas vai izņēmuma apstrāde } });Sinhroni (neizmantojiet UI plūsmā):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Apstrādāt veiksmīgu atbildi } else { // Apstrādāt kļūdas atbildi } } catch (IOException e) { // Kļūdas apstrāde } -
Apstrādāt atbildi:
onResponsemetodēs vai pēc veiksmīgaexecute. Pārbaudīt atbildes statusu (response.isSuccessful()) un iegūt datus (response.body()). Apstrādāt kļūdasonFailurevaicatchblokos sinhronajā pieprasījumā.
Retrofit arī atbalsta integrāciju ar korutīnām (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (retrofit2:adapter-rxjava) un citām bibliotēkām asinhronai programmēšanai.