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