Sobes.tech
Middle

Ինչպես կատարել ցանցային հարցումներ Retrofit գրադարանի օգտագործմամբ։

sobes.tech AI

Պատասխան AI-ից

  1. Ավելացնել կախվածություն: build.gradle (app) ֆայլում:

    // Retrofit
    implementation 'com.squareup.retrofit2:retrofit:<latest_version>'
    implementation 'com.squareup.retrofit2:converter-gson:<latest_version>' // կամ այլ կոնվերտեր
    
  2. Ստեղծել 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> - վերադարձվող տիպը՝ ասինխրոն կամ սինխրոն հարցման համար:
  3. Ստեղծել Retrofit օրինակ: Կարգավորել հիմնական URL-ը և ավելացնել կոնվերտեր:

    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl("https://api.example.com/")
        .addConverterFactory(GsonConverterFactory.create()) // Օգտագործում ենք Gson JSON-ի վերլուծության համար
        .build();
    
    ApiService apiService = retrofit.create(ApiService.class);
    
  4. Կատարել հարցում: Ասինխրոն կամ սինխրոն:

    Ասինխրոն (առաջարկվում է 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) {
        // Սխալի մշակում
    }
    
  5. Պատասխանն մշակել: onResponse կամ execute-ից հետո: Ստուգել պատասխանին վիճակը (response.isSuccessful()) և տվյալները (response.body()) ստանալ: Սխալները մշակել onFailure-ում կամ catch-ում:

Retrofit-ը նաև աջակցում է կոռուտինների հետ ինտեգրմանը (retrofit2:retrofit2-kotlin-coroutines-adapter), RxJava-ով (retrofit2:adapter-rxjava) և այլ գրադարաններով՝ ասինխրոն ծրագրավորման համար: