Πώς να πραγματοποιήσετε δικτυακά αιτήματα με τη βιβλιοθήκη 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 για parsing JSON .build(); ApiService apiService = retrofit.create(ApiService.class); -
Εκτελέστε το αίτημα: Ασύγχρονα ή συγχρονικά.
Ασύγχρονα (συνιστάται για το UI thread):
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 thread):
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) και άλλες βιβλιοθήκες για ασύγχρονο προγραμματισμό.