【问题标题】:Retrofit + rx error handling in map地图中的改造 + rx 错误处理
【发布时间】:2016-12-20 08:55:31
【问题描述】:

如果响应不成功,我想处理我的地图中的错误。我已尝试使用本文Error handling in Retrofit 中的 RetrofitException,但未成功。

这是我的 Observable

    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);
}

【问题讨论】:

    标签: android error-handling retrofit rx-java reactive-programming


    【解决方案1】:

    添加 subscribe 给你 Observerable 我认为可以解决你的问题。最后你方法添加 subscribe:

                  .subscribe(new Subscriber<YOUR_OBJECT>() {
                        @Override
                        public void onCompleted() {
    
                        }
    
                        @Override
                        public void onError(Throwable e) {
                            //handle your error here
                            showError();
                        }
    
                        @Override
                        public void onNext(YOUR_OBJECT object) {
                        }
    

    查看更多here

    【讨论】:

    • 我有订阅,它在另一个班级。我需要将 throwable 从 map 传递给 onError。
    • @AlexCrow 输入 try catch 并且 Observer.error(t) 不能解决您的问题?
    猜你喜欢
    • 1970-01-01
    • 2019-05-24
    • 2014-12-28
    • 2016-03-03
    • 1970-01-01
    • 2016-03-05
    • 1970-01-01
    • 2016-05-03
    • 2015-03-06
    相关资源
    最近更新 更多