σφάλματα παγκόσμια διακίνηση Retrofit2 + RxJava2

ψήφοι
0

Πώς να ελέγξετε τη σύνδεση δικτύου και είναι ο διακομιστής διαθέσιμη για όλες τις αιτήσεις, χρησιμοποιώντας retrofit2 και rxjava2;

Μπορώ να ελέγξετε το «διακομιστής διαθέσιμη» στέλνοντας ένα αίτημα για url του server μου, αλλά μπορώ να ελέγξω τη σύνδεση του δικτύου με την αποστολή ενός αιτήματος στο google.com ή σε άλλο «καλό» δικτυακό τόπο;

Έχω περισσότερες αιτήσεις api, για παράδειγμα, ένα από τα εξής:

compositeDisposable.add(RetrofitClient
            .getApi()
            .somemethod()
            .map(response -> {
                Data data = null;
                if (response.isSuccessful()) {
                    data = response.body();
                } else {
                    data = new Data();
                    data.setResponseCode(response.code())
                }
                return data;
            })
            .onErrorReturnItem(new Data())
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(this::checkResponse());

Πώς να ελέγξει αυτά τα σφάλματα, τα οποία έγραψα, για όλες τις αιτήσεις, προκειμένου να μην επαναλάβει το κωδικό; Ευχαριστώ.

Δημοσιεύθηκε 20/10/2018 στις 12:46
πηγή χρήστη
Σε άλλες γλώσσες...                            


2 απαντήσεις

ψήφοι
1

Πρόσκληση RxJavaPlugins.setErrorHandlerσε onCreateτάξη την αίτησή σας. Για παράδειγμα:

    RxJavaPlugins.setErrorHandler(e -> {
        if ((e instanceof IOException) || (e instanceof SocketException)) {
            // handle exception
            return;
        }
    });
Απαντήθηκε 20/10/2018 στις 12:51
πηγή χρήστη

ψήφοι
0

Μπορείτε να χρησιμοποιήσετε liftτη μέθοδο που σας επιτρέπουν να εφαρμόσει το δικό σας φορέα για την περίπτωσή σαςApiErrorOperator

Και να το χρησιμοποιήσετε ως εξής:

@Override
  public @NonNull Observable<List<Category>> fetchCategories() {
    return this.service
      .categories()
      .lift(apiErrorOperator())
      .map(CategoriesEnvelope::categories)
      .subscribeOn(Schedulers.io());
  }
Απαντήθηκε 20/10/2018 στις 13:07
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more