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()) // JSON-ды талдау үшін Gson қолданамыз
        .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 көмегімен) және басқа асинхронды бағдарламалау кітапханаларымен интеграцияны қолдайды.