Показать ошибку нет интернета используя Retrofit 2 и RxJava

174
15 апреля 2022, 18:50

для получения данных с сервера использую вот такой запрос:

   public void getContactDataTechnicalSupport(String country) {
         compositeDisposable = new CompositeDisposable();
         ApiFactory apiFactory = ApiFactory.getInstance();
         ApiService apiService = apiFactory.getApiService();
         Disposable disposable = apiService.getContactDataTechnicalSupport(country)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(response -> {
                if (response.getSuccess())
                    view.setTechSupportData(response);
                else
                    view.showErrorRequestSupportContact(response.getCode(), response.getMessage());
              }, throwable -> {
                    view.showErrorRequestSupportContact(0, "Ошибка подключения");
              });
          compositeDisposable.add(disposable);
    }

Мне нужно показать пользователю что у него нет интернета, данный запрос показывает это сообщение даже если ошибка на сервере, что не совсем корректно, как мне можно обработать ошибку чтобы показать сообщение?

Answer 1

Решил это вот так:

    apiService.getContactDataTechnicalSupport(country)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(response -> {
                if (response.getSuccess())
                    view.setTechSupportData(response);
                else
                    view.showErrorRequestSupportContact(response.getCode(), response.getMessage());
            }, throwable -> {
                if (throwable instanceof SocketTimeoutException || throwable instanceof UnknownHostException)
                    view.showErrorRequestSupportContact(NO_INTERNET_CODE, "Нет интернета");
                else
                    view.showErrorRequestSupportContact(0, "Ошибка подключения");
            });
READ ALSO
Выборка данных из нескольких таблиц в Hibernate

Выборка данных из нескольких таблиц в Hibernate

Как запросом получить данные из двух таблиц? Есть классы Patient и Service

133
spring обновление данных чере sql и через jpa

spring обновление данных чере sql и через jpa

обновляю данные через sql всё просто находим запись и делаем инкремент

131
Один BufferedReader и Random на несколько классов

Один BufferedReader и Random на несколько классов

Пишу программу для формирования пароля и угадывания слова пользователя путём перебора случайных символов из алфавитаПользователь определяет...

141
Почему Spark Core тормозит?

Почему Spark Core тормозит?

При работе только с spark sql запросы на базу обрабатываются очень быстро, но при подключении JavaPairJDD он начинает тормозить

205