Ich entschied mich, Retrofit 2.0 + RxJava in meinem Projekt zu verwenden. Das Hauptproblem ist, dass ich nicht vollständig verstehe, wie es sein sollte.Datenübertragung zwischen Anfragen mit Retrofit + RxJava
Zuerst alle Anfragen an meine Server-API, und jede Anfrage muss accessToken haben.
Zum Beispiel möchte ich alle Bücher bekommen mit meinem API:
1.Send Anfrage AccessToken Anfrage
2.Get Antwort mit AccessToken Wert
3.Insert diesen Wert zu erhalten
getBookRequest4.Send getBookRequest und dann die Antwort mit JSONArray der Bücher erhalten
Frage ist, wie soll ich das machen?
Jetzt habe ich nur Verfahren mit accessTokenValue bekommen:
public void accessToken() {
ApiMethods methods = ApiFactory.connect();
methods.getAccess(MAIN_URL + ACCESS_URL)
.timeout(15, TimeUnit.SECONDS)
.retry(3)
.subscribeOn(Schedulers.newThread())
.map(new Func1<List<GetAccess>, AccessToken>() {
@NonNull
@Override
public AccessToken call(List<GetAccess> getAccesses) {
double xA = (double) getAccesses.get(0).A;
double xB = (double) getAccesses.get(0).B;
double xC = (double) getAccesses.get(0).C;
passDouble = //...SOME MANIPULATING WITH VALUES...//
id = getAccesses.get(0).ID;
AccessToken token = new AccessToken();
token.setId(String.valueOf(id));
token.setToken(String.valueOf(passDouble));
token.setIsCompleted(true);
return token;
}
})
.onErrorReturn(new Func1<Throwable, AccessToken>() {
@Override
public AccessToken call(Throwable throwable) {
return new AccessToken(String.valueOf(id), String.valueOf(passDouble), false);
}
})
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<AccessToken>() {
@Override
public void call(AccessToken accessToken) {
//EventBus.getDefault().post(accessToken);
}
});
}
Sollte ich Observable.zip oder etwas anderes? Was ist der bessere Weg, um eine zweite Anfrage an meinen Server mit Werten aus der ersten Anfrage zu implementieren?
Vielen Dank, das ist genau das, was ich brauche, Code funktioniert super! – Ololoking