Api, который я использовал для обработки двух откликов Api с o, используя retrofit и rx java. Я создаю модель ответа и модель ошибки. Я не знаю, как обрабатывать оба ответа в одном API, вот моя реализация
@POST("login/")
Observable<Response<Object>> login(@Body LoginParamModel model);
, так вот моя реализация API
RetroClient.getClient(ApiEndPointInterface.URl).create(ApiEndPointInterface.class)
.login(model).subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Response<Object>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Response<Object> loginDataModelResponse) {
mLoginDataModelResponse=loginDataModelResponse;
}
@Override
public void onError(Throwable e) {
mLoginView.LoginError(e.getMessage());
}
@Override
public void onComplete() {
if (mLoginDataModelResponse.code() == 200 || mLoginDataModelResponse.code() == 201) {
LoginDataModel loginDataModel = (LoginDataModel) mLoginDataModelResponse.body();
mLoginView.LoginResult(loginDataModel);
} else if (mLoginDataModelResponse.code() == 400) {
try {
mLoginView.LoginError(CommonUtill.JsonReader(mLoginDataModelResponse.errorBody().string()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
});
И я добился успеха, но проблема в том, Я не преобразовал класс объекта в класс модели
LoginDataModel loginDataModel = (LoginDataModel) mLoginDataModelResponse.body();
Я получил исключение такого типа:
W: io.reactivex.exceptions.UndeliverableException: исключение не может быть доставлено потребителю потому что он уже отменил / удалил поток или исключение не было go для начала. Дополнительная информация: https://github.com/ReactiveX/RxJava/wiki/What 's-different-in-2.0 # обработка ошибок | java .lang.ClassCastException: com.google.gson.internal.LinkedTreeMap нельзя преобразовать в com.model.login.LoginDataModel
W: вызвано: java .lang.ClassCastException: com.google .gson.internal.