2015-12-07 4 views
1

Я использую Retrofit 2.0 в своем проекте с интерфейсом Observable и обертой результата. Метод:Как получить ответ на onError внутри Rxjava

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 вернуть метательного. Как я могу получить ответ?

+0

В модификации 1.9, то Throwable было на самом деле RetrofitError, на который вы можете получить таким Телом: '((RetrofitError) e) .getBodyAs (CompanyModel.class)'. Не уверен, как это работает с retrofit 2, но я бы начал с того, что поставил точку останова в этом 'onError' и более точно проверил, что именно находится в этом метательном – njzk2

+0

@ njzk2. Забрасываемый может быть SocketTimeoutException, JSONException ... Вопрос в том, что Я могу получить JSONException, но я не могу получить ответ, не вижу строку возврата JSONObject, не могу получить код состояния – Even2015

ответ

1

Я думаю, что вы можете обернуть вашу модель в ответ изменить объявление Наблюдателя Observable<Response<CompanyModel>> и получить ошибку errorBody()

Для другой ссылки вы можете проверить this github issue

+0

Спасибо, очень много ~~ – Even2015