Chyby Global manipulaci Retrofit2 + RxJava2

hlasů
0

Jak zkontrolovat připojení k síti a je server k dispozici pro všechny požadavky, s použitím retrofit2 a rxjava2?

Mohu zkontrolovat „server k dispozici“ zaslání žádosti na můj server url, ale mohu zkontrolovat připojení k síti odesláním požadavku na google.com nebo na jiné „dobré“ webové stránky?

Mám více žádostí API, například jedno z toho:

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

Jak kontrolovat tyto chyby, které jsem napsal pro všechny žádosti, aby nedošlo k duplikovat kód? Dík.

Položena 20/10/2018 v 12:46
zdroj uživatelem
V jiných jazycích...                            


2 odpovědí

hlasů
1

Zavolat RxJavaPlugins.setErrorHandlerdo onCreatevaší třídy aplikace. Například:

    RxJavaPlugins.setErrorHandler(e -> {
        if ((e instanceof IOException) || (e instanceof SocketException)) {
            // handle exception
            return;
        }
    });
Odpovězeno 20/10/2018 v 12:51
zdroj uživatelem

hlasů
0

Dalo by se použít liftmetodu, která vám umožní realizovat vlastní operátora pro váš případApiErrorOperator

A použít ji jako následující:

@Override
  public @NonNull Observable<List<Category>> fetchCategories() {
    return this.service
      .categories()
      .lift(apiErrorOperator())
      .map(CategoriesEnvelope::categories)
      .subscribeOn(Schedulers.io());
  }
Odpovězeno 20/10/2018 v 13:07
zdroj uživatelem

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