Ich benutze Retrofit2 mit Rx. Ich habe zwei API-Aufrufe. Wenn der erste Aufruf eine leere Antwort mit Code 400 zurückgibt, muss ich einen zweiten API-Aufruf machen, wenn nicht, dann nur um das Ergebnis anzuzeigen. Ich habe benutzerdefinierte Fehlerbehandlung implementiert wie gezeigt here. Hier ist meine Lösung:Android Retrofit2 mit rx sequentiellen Anfragen
getResponse1(token)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new ObserverErrorImpl<Response1, BaseError>(BaseError.class) {
@Override
public void onNext(Response1 response) {
view.onSuccess(response);
}
@Override
public void onClientError(BaseError response) {
getResponse2(token)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new ObserverErrorImpl<Response2, BaseError>(BaseError.class) {
@Override
public void onNext(Response2 response) {
view.onSuccess(response);
view.hideProgress();
}
@Override
public void onError(Throwable throwable) {
super.onError(throwable);
view.hideProgress();
}
});
}
@Override
public void onError(Throwable throwable) {
super.onError(throwable);
view.hideProgress();
}
});
Ist es möglich, diesen Code zu vereinfachen, die onClientError
innerhalb Methode geht? Ist es eine gute Lösung, das zu mögen?