私のサーバーは、すべてがうまくいくとドメイン Java オブジェクトを返しますが、エラーが発生すると ErrorResponse オブジェクトを返します。(編集: サーバーは 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());
});
おそらく、これを自動的に処理し、在庫の onError(Throwable t) の代わりに onError(ErrorResponse err) で Observable を返すカスタム CallAdapterFactory を作成する必要がありますか?
これを達成する方法についてのアイデアはありますか?
それは良い考えですか?