【发布时间】:2017-12-27 16:56:46
【问题描述】:
我提出一个请求(任何、授权、注册等),然后我才发现我需要更新ACCESS-TOKEN,即我收到错误401。
这是授权请求:
BaseApplication.getApiClient()
.signIn(accessToken, body)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<UserProfile>() {
@Override
public void onSubscribe(Disposable d) {
Log.d("-- SignInOnSubscribe", "Subscribed!");
}
@Override
public void onSuccess(UserProfile userProfile) {
if (userProfile.getErrorDetails() != null) {
onSignInFinishedCallback.onLoginFailure(userProfile.getErrorDetails());
Log.d("-- SignInOnError", userProfile.getErrorDetails());
} else {
onSignInFinishedCallback.onLoginSuccess(userProfile);
profileRepository.updateUserProfile(userProfile);
Log.d("-- SignInOnSuccess", userProfile.getName());
}
}
@Override
public void onError(Throwable e) {
Log.d("-- SignInOnError", e.getMessage());
if (e.getMessage().equals(Constants.CODE_UNAUTHORIZED)){
// Action on error 401
}
onSignInFinishedCallback.onLoginFailure(e.getMessage());
}
});
API 请求:
@POST("/api/login")
Single<UserProfile> getAccessToken(@Body Map<String, String> requestBody);
@POST("/api/abonent/login")
Single<UserProfile> signIn(@Header("X-ACCESS-TOKEN") String accessToken,
@Body Map<String, String> requestBody);
例如授权请求为request 1,接收TOKEN的请求为query 2。
问题:如果我在query 1 中收到错误,并且在query 2 成功后,我如何更新TOKEN,然后再执行query 1?
【问题讨论】:
标签: java android rx-java retrofit2