2
我是rxjava或rxandroid中的新成員,並且正在尋找一種處理多個請求的更好方法。我需要從服務器獲取令牌並將結果作爲參數進行登錄驗證,如果它返回成功,則通過getSessionId方法獲取sessionId。 我考慮過關於zip或合併,但我不認爲它會起作用。所以你能給我一個想法,或者我不知道,思路? 謝謝。有沒有更好的方法使用rxjava多個請求?
這裏是我的代碼:
private void getToken(final String name , final String pwd){
api.newToken()
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<TokenModel>() {
@Override public void call(TokenModel tokenModel) {
String token = tokenModel.request_token;
if (!"".equals(token)){
login(token, name, pwd);
}else {
Timber.e("got token failed");
}
}
});
}
private void login(String token, String name, String pwd){
api.validateToken(token, name, pwd)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Action1<TokenModel>() {
@Override public void call(TokenModel tokenModel) {
String token = tokenModel.request_token;
if (!"".equals(token)){
getSessionId(token);
}else {
Timber.e("got token failed");
}
}
});
}
private void getSessionId(String token){
api.newSessionn(token)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<TokenModel>() {
@Override public void onCompleted() {
//go to home activity
}
@Override public void onError(Throwable e) {
//handle error
}
@Override public void onNext(TokenModel tokenModel) {
//store session id
}
});
}
謝謝,它有很大的幫助。順便說一下,我可以在Observer中處理所有錯誤嗎?你知道,onError()。 – machinezhou 2015-04-04 10:52:56
這取決於你,但你可以 – dwursteisen 2015-04-04 11:18:10
謝謝,欣賞它 – machinezhou 2015-04-04 14:01:21