Sobes.tech
Middle

Kuidas teha võrgu päringuid Retrofit teegiga?

sobes.tech AI

Vastus AI-lt

  1. 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
    
  2. 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, @POST ja 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.
  3. 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);
    
  4. 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
    }
    
  5. Töötle vastust: onResponse meetodites või pärast edukat execute. Kontrolli vastuse olekut (response.isSuccessful()) ja võta andmed (response.body()). Töötle vigu onFailure-is või catch-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.