Middle
Ինչպես կատարել ցանցային հարցումներ Retrofit գրադարանի օգտագործմամբ։
sobes.tech AI
Պատասխան AI-ից
-
Ավելացնել կախվածություն:
build.gradle(app) ֆայլում:// Retrofit implementation 'com.squareup.retrofit2:retrofit:<latest_version>' implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // կամ այլ կոնվերտեր -
Ստեղծել API ինտերֆեյս: Հստակեցնել յուրաքանչյուր ցանցային հարցման համար մեթոդներ:
interface ApiService { @GET("users/{id}") Call<User> getUser(@Path("id") int userId); @POST("users") Call<User> createUser(@Body User user); }@GET,@POSTև այլ նշումներ որոշում են HTTP մեթոդի տիպը:"users/{id}"- հարաբերական ուղին ռեսուրսին:@Path,@Query,@Body- հարցման պարամետրերի նշումներ:Call<T>- վերադարձվող տիպը՝ ասինխրոն կամ սինխրոն հարցման համար:
-
Ստեղծել Retrofit օրինակ: Կարգավորել հիմնական URL-ը և ավելացնել կոնվերտեր:
Retrofit retrofit = new Retrofit.Builder() .baseUrl("https://api.example.com/") .addConverterFactory(GsonConverterFactory.create()) // Օգտագործում ենք Gson JSON-ի վերլուծության համար .build(); ApiService apiService = retrofit.create(ApiService.class); -
Կատարել հարցում: Ասինխրոն կամ սինխրոն:
Ասինխրոն (առաջարկվում է UI հոսքի համար):
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(); // Հաջող պատասխանին մշակել } else { // Պատասխանային սխալը մշակել (օր. 404, 500) } } @Override public void onFailure(Call<User> call, Throwable t) { // Ցանցային սխալ կամ արտահայտություն մշակել } });Սինխրոն (չի օգտագործվում UI հոսքում):
try { Response<User> response = apiService.getUser(123).execute(); if (response.isSuccessful()) { User user = response.body(); // Հաջող պատասխանին մշակել } else { // Սխալի պատասխան մշակել } } catch (IOException e) { // Սխալի մշակում } -
Պատասխանն մշակել:
onResponseկամexecute-ից հետո: Ստուգել պատասխանին վիճակը (response.isSuccessful()) և տվյալները (response.body()) ստանալ: Սխալները մշակելonFailure-ում կամcatch-ում:
Retrofit-ը նաև աջակցում է կոռուտինների հետ ինտեգրմանը (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava-ով (retrofit2:adapter-rxjava) և այլ գրադարաններով՝ ասինխրոն ծրագրավորման համար: