1
如果響應不成功,我想在地圖中處理錯誤。我嘗試使用此文章Error handling in Retrofit中的RetrofitException,但沒有成功。地圖中的改造+ rx錯誤處理
這是我可觀察
public Observable<JsonElement> commonResponse(final Object request, String method, final Context context) {
Log.v("method", method);
//Create Request
Map<String, Object> data = ApiHelper.commonParams(request, method, context);
return apiService.commonResponse(method, data)
.subscribeOn(Schedulers.newThread())
.observeOn(Schedulers.immediate())
.map(new Func1<Response<BaseResponse>, JsonElement>() {
@Override
public JsonElement call(Response<BaseResponse> response) {
if (!response.isSuccessful()) {
//throwException(response);
}
BaseResponse baseResponse = response.body();
return baseResponse.getData();
}
});
}
這是我改造
private static HttpLoggingInterceptor logging = new HttpLoggingInterceptor();
private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder();
private static Retrofit.Builder builder =
new Retrofit.Builder()
.baseUrl(ApiService.API_URL)
.addConverterFactory(GsonConverterFactory.create())
.addCallAdapterFactory(RxJavaCallAdapterFactory.create());
public static Retrofit retrofit = builder.client(httpClient.addInterceptor(logging.setLevel(HttpLoggingInterceptor.Level.BASIC)).build()).build();
public static ApiService retrofitCreate() {
return retrofit.create(ApiService.class);
}
我有**訂閱**,它是在另一類。我需要傳遞從地圖到onError。 –
@AlexCrow放入try catch和Observer.error(t)不能解決您的問題? – Amir