【问题标题】:How to get response on onError inside Rxjava如何在 Rxjava 中获取 onError 响应
【发布时间】:2016-03-11 13:59:39
【问题描述】:

我在我的项目中使用带有 Observable 接口和 Result 包装器的 Retrofit 2.0。 方法:

Observable<CompanyModel> companyList(@Query("userAcc") String userAcc,
                                     @Query("password") String password);

代码:

RetrofitHelper.getCompanyList(userName, password).subscribe(new Observer<CompanyModel>() {
        @Override
        public void onCompleted() {
            System.out.println("Observable completed");
        }

        @Override
        public void onError(Throwable e) {
            System.out.println("Observable error");
        }

        @Override
        public void onNext(CompanyModel companyModel) {
            List<Company> company = companyModel.getCompany();
            System.out.println("Observable next");
        }
    });

我想在错误发生时得到响应,但是 onError 返回 Throwable。 如何获得响应?

【问题讨论】:

  • 在改造 1.9 中,throwable 实际上是一个 RetrofitError,你可以在上面得到这样的 Body:((RetrofitError) e).getBodyAs(CompanyModel.class)。不确定它如何与改造 2 一起使用,但我会首先在 onError 中放置一个断点,然后更仔细地检查该 throwable 中的确切内容
  • @njzk2 throwable 可能是 SocketTimeoutException,JSONException...问题是我可以得到一个 JSONException ,但是我无法得到响应,看不到 JSONObject 的返回字符串,无法得到状态码

标签: android retrofit rx-java


【解决方案1】:

我认为您可以将模型包装在 Response 中,将 Observer 声明更改为 Observable&lt;Response&lt;CompanyModel&gt;&gt; 并获得错误 errorBody()

如需其他参考,您可以查看this github issue

【讨论】:

    猜你喜欢
    • 2019-03-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 2019-09-06
    • 2020-02-15
    • 2018-02-27
    • 1970-01-01
    • 2015-03-12
    相关资源
    最近更新 更多