當一切正常時,我的服務器返回域java對象,但在出現錯誤時返回ErrorResponse對象。 (編輯:服務器返回HTTP代碼40x,並帶有錯誤信息的json主體) 如何在改造2 + rx-android上註冊全局錯誤轉換器以避免在每次調用時都做同樣的事情?如何在retrofit 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會自動處理這個問題,並會返回一個可觀察與onerror的(錯誤響應錯誤),而不是股票onError(Throwable t)?
有關如何實現此目的的任何想法?
這是一個好主意嗎?
檢查出這個要點https://gist.github.com/rahulgautam/25c72ffcac70dacb87bd和這個github問題https://github.com/square/retrofit/issues/1102 – LordRaydenMK