Мой сервер возвращает объекты Java домена, когда все идет хорошо, но возвращает объект ErrorResponse, когда возникает ошибка. (EDIT: сервер возвращает http-код 40x и тело json с информацией об ошибке). Как я могу зарегистрировать глобальный преобразователь ошибок на модификации 2 + rx-android, чтобы не делать одно и то же при каждом отдельном вызове?
В настоящее время я делаю это так при каждом вызове:
MyApiRx.doSomething(params)
.subscribeOn(Schedulers.io())
.subscribe(response -> responseHandler(),
throwable -> {
HttpException err = (HttpException) throwable;
Converter<ResponseBody, ErrorResponse> ec = retrofit.responseConverter(ErrorResponse.class, new Annotation[]{});
ErrorResponse errorResponse = ec.convert(err.response().errorBody());
});
Может быть, мне следует написать собственный CallAdapterFactory, который обработает это автоматически и вернет Observable с onError (ErrorResponse err) вместо стандартного onError (Throwable t)?
Любые идеи о том, как этого добиться?
Это хорошая идея?