【发布时间】:2016-03-21 15:03:53
【问题描述】:
我决定在我的项目中使用 Retrofit 2.0 + RxJava。 主要问题是我不完全理解应该怎么做。
首先,所有请求都发往我的服务器 API,并且每个请求都必须有 accessToken。
例如,我想使用我的 API 获取所有书籍:
1.发送请求获取AccessToken请求
2.获取AccessToken值的回复
3.将此值插入getBookRequest
4.发送getBookRequest,然后得到JSONArray of books的回复
问题是我应该怎么做这个?
现在我只有获得 accessTokenValue:
的方法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);
}
});
}
我应该使用 Observable.zip 还是其他?使用第一个请求的值对我的服务器实施第二个请求的更好方法是什么?
【问题讨论】:
标签: android rx-java observable rx-android retrofit2