Retrofit2 + RxJava2 Globale Bedienungsfehler

stimmen
0

Wie eine Netzwerkverbindung zu überprüfen und ist der Server für alle Anfragen zur Verfügung, retrofit2 und rxjava2 mit?

Ich kann den „Server verfügbar“ überprüfen, indem eine Anfrage an meine Server-URL zu senden, aber kann ich die Netzwerkverbindung überprüfen, indem eine Anfrage an google.com oder auf einen anderen „guten“ Website zu senden?

Ich habe mehr api Anfragen, zum Beispiel eines dieser:

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());

Wie diese Fehler zu überprüfen, was ich geschrieben habe, für alle Anforderungen, um den Code zu duplizieren? Vielen Dank.

Veröffentlicht am 20/10/2018 um 12:46
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Rufen Sie RxJavaPlugins.setErrorHandlerin onCreateIhrer Anwendungsklasse. Zum Beispiel:

    RxJavaPlugins.setErrorHandler(e -> {
        if ((e instanceof IOException) || (e instanceof SocketException)) {
            // handle exception
            return;
        }
    });
Beantwortet am 20/10/2018 um 12:51
quelle vom benutzer

stimmen
0

Sie könnten verwenden liftMethode , die können Sie Ihre eigenen Operator für Ihren Fall implementierenApiErrorOperator

Und es wie folgt verwendet werden:

@Override
  public @NonNull Observable<List<Category>> fetchCategories() {
    return this.service
      .categories()
      .lift(apiErrorOperator())
      .map(CategoriesEnvelope::categories)
      .subscribeOn(Schedulers.io());
  }
Beantwortet am 20/10/2018 um 13:07
quelle vom benutzer

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