Как получить код состояния https в Retrofit RxJava Android? - PullRequest
0 голосов
/ 11 мая 2018

Раньше я всегда использовал дооснащение для загрузки данных.Это очень легко обработать или получить код состояния ответа.

Но сейчас я хочу использовать Retrofit с RxJava, но я не знаю, как обработать или получить код состояния https ответа в методе onNext.

progressDialog.show();

Observable<ResponseData> observable = apiService.getData();
compositeDisposable.add(observable
        .subscribeOn(Schedulers.io())
        .observeOn(AndroidSchedulers.mainThread())
        .subscribeWith(new DisposableObserver<ResponseData>() {
            @Override
            public void onNext(ResponseData responseData) {
                Log.e("pppp", "onNext: " + responseData.toString());
            }

            @Override
            public void onError(Throwable e) {
                progressDialog.dismiss();
                Log.e("pppp", "onError: " + e.getMessage());
            }

            @Override
            public void onComplete() {
                progressDialog.dismiss();
                Log.e("pppp", "onComplete");
            }
        })
);

Все, пожалуйста, помогите мне решить эту проблему.
Спасибо!

Ответы [ 3 ]

0 голосов
/ 11 мая 2018

для получения статуса

  Observable<ResponseData> observable = apiService.getData(); 
    compositeDisposable.add(observable 
            .subscribeOn(Schedulers.io()) 
            .observeOn(AndroidSchedulers.mainThread()) 
            .subscribeWith(new DisposableObserver<ResponseData>() { 
                @Override 
                public void onNext(ResponseData responseData) {
                    int statusCode = responseData.code();
                    // here you get your status code
                    Log.e("statusCode ", "onNext: " + statusCode );
                } 

                @Override 
                public void onError(Throwable e) {
                    progressDialog.dismiss(); 
                    Log.e("pppp", "onError: " + e.getMessage());
                } 

                @Override 
                public void onComplete() { 
                    progressDialog.dismiss(); 
                    Log.e("pppp", "onComplete");
                } 
            }) 
    ); 
0 голосов
/ 11 мая 2018

Вы должны заключить свои ResponseData в Response как

Observable<Response<ResponseData>> observable = apiService.getData(); 

Затем внутри onNext

@Override 
public void onNext(Resposne<ResponseData> response) {
   int statusCode = response.code();
}

и для ошибки

@Override 
public void onError(Throwable e) {
    ((HttpException) e).code();
}
0 голосов
/ 11 мая 2018

responseData.code дает вам код состояния

   int statusCode = responseData.code();
...