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

답변

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

** 구독 ** 있습니다. 다른 클래스에 있습니다. 지도에서 throwable을 onError에 전달해야합니다. –

+0

@AlexCrow는 try catch에 넣고 Observer.error (t)는 문제를 해결하지 못합니까? – Amir