如何在 Retrofit RxJava Android 中获取 https 状态码?

How to get https status code in Retrofit RxJava Android?

之前我都是用retrofit加载数据。非常容易处理或获取响应的状态码。

但是现在我想用RxJava来使用Retrofit,但是我不知道如何处理或获取onNext方法中响应的https状态码。

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");
            }
        })
);

大家帮我解决这个问题
谢谢!

responseData.code 给你状态码

   int statusCode = responseData.code();

获取状态

  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");
                } 
            }) 
    ); 

您应该将 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();
}