0
我有一个包含登录页面的项目。在这个页面上,用户点击“登录”后,我需要发送请求到checkUserName(检查我们是否有这样的用户,他可以登录),然后才能进行身份验证。使用rxjava处理两个身份验证请求
在代码中,我有这样的:
接口:
@POST("endpoint")
Flowable<AccountResponse> auth(@Body AuthRequestBody authRequestBody);
@POST("endpoint")
Flowable<CheckUsernameResponse> checkUserName(@Body CheckUserNameRequest checkUserNameRequest);
RestService:
public Flowable<AccountResponse> auth(String login, String password) {
return api.auth(new AuthRequestBody(login, password)).compose(handleError());
}
public Flowable<CheckUsernameResponse> checkUserName(String login) {
return api.checkUserName(new CheckUserNameRequest(login)).compose(handleError());
}
和Rx:
public Flowable<AccountResponse> auth(String login, String password) {
return checkUsername(login).flatMap(checkUsernameResponse -> restService.auth(login, password))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.doOnNext(loginResponse -> {
tokenManager.saveToken(loginResponse.getToken());
});
}
public Flowable<CheckUsernameResponse> checkUsername(String login) {
return restService.checkUserName(login)
.subscribeOn(Schedulers.io());
}
我怎么能处于RX检查,如果第一个查询是可以的? (checkUsername)。我的意思是,该API没有返回错误消息,UserId是好的,isAccessGranted是真实的,然后才发送第二个请求auth?