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);
}
私は**サブスクリプション**を持っており、別のクラスにあります。私はマップから投げられるものをonErrorに渡す必要があります。 –
@AlexCrowはtry catchに入れて、Observer.error(t)は問題を解決しません。 – Amir