1

応答が成功しなかった場合、マップにエラーを処理したい。私はこの記事でRetrofitExceptionを使用しようとしましたError handling in Retrofitしかし、不成功です。マップの改行+ 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); 
} 

答えて

0

はあなたに私はあなたの問題を解決すると思うObserverableを購読追加です。終わりに、あなたは方法を購読追加:

   .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多くを参照してください。

+0

私は**サブスクリプション**を持っており、別のクラスにあります。私はマップから投げられるものをonErrorに渡す必要があります。 –

+0

@AlexCrowはtry catchに入れて、Observer.error(t)は問題を解決しません。 – Amir

関連する問題