2015-11-29 2 views
8

В моем запросе должна быть описана ошибка JSON для POJO или JSON (могут быть недопустимые поля запроса, проблемы с сервером и т. Д.).Ошибки ручного управления в дооснащении 2 RX

Но модификация в подписчике дает мне только Throwable. Как я могу узнать, что сетевая ошибка, что такое http-код, и получить JSON с ошибкой?

private class ProjectListSubscriber extends Subscriber<ProjectListResponse> { 

    @Override 
    public void onCompleted() { 
    } 

    @Override 
    public void onError(Throwable e) { 
     //is that a network? http code? convert json to error POJO? 
    } 

    @Override 
    public void onNext(ProjectListResponse projectListResponse) { 
     updateProjectList(projectListResponse.getProjectList()); 
    } 
} 

ответ

10

Поскольку вы используете RxJava, onError вызывается в случае ошибок сети и конечных точек, связанных ошибки являются частью Response. В случае ошибки, проверьте, если Throwable является экземпляром HttpException

public void onError(Throwable e) { 
    if (e instanceof HttpException) { 

если проверка верно, то у Вас есть ошибка в вашем запросе. Бросить бросок на HttpException, а доступ - это члены. Например.

((HttpException) e).response().errorBody() 

если проверка false то есть сеть связанных ошибок.

+0

Как я могу получить объект Response в Rx? – DmitryBorodin

+0

Я отредактировал свой ответ – Blackbelt

+0

Спасибо. Я только что проверил - onError callen в случае любого не 200 http-кода. Не только сетевые ошибки. – DmitryBorodin

Смежные вопросы