Middle
Kuidas teha võrgu päringuid Retrofit teegiga?
sobes.tech AI
Vastus AI-lt
-
Lisa sõltuvus:
build.gradle(app) failis.// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // või teine konverter -
Loo API-liides: Määratle meetodid iga võrgu päringu jaoks.
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTja teised annotatsioonid määravad HTTP meetodi tüübi."users/{id}"- suhteline tee ressursile.@Path,@Query,@Body- annotatsioonid päringu parameetritele.Call<T>- tagastatava tüübi kasutamine asünkroonseks või sünkroonseks päringuks.
-
Loo Retrofit näide: Määra baas-URL ja lisa konverter.
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Kasutame Gson-i JSON-i analüüsimiseks .build(); ApiService apiService = retrofit.create(ApiService.class); -
Saada päring: Asünkroonselt või sünkroonselt.
Asünkroonselt (soovitatav UI voogele):
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(); // Eduka vastuse töötlemine } else { // Vea töötlemine (nt 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Võrgu viga või erind } });Sünkroonselt (mitte UI vooges kasutada):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Eduka vastuse töötlemine } else { // Vea töötlemine } } catch (IOException e) { // Vea töötlemine } -
Töötle vastust:
onResponsemeetodites või pärast edukatexecute. Kontrolli vastuse olekut (response.isSuccessful()) ja võta andmed (response.body()). Töötle viguonFailure-is võicatch-is sünkroonses päringus.
Retrofit toetab ka korutinatega (käsitsi retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava (käsitsi retrofit2:adapter-rxjava) ja teiste raamatukogudega asünkroonseks programmeerimiseks.