【发布时间】:2020-01-28 20:39:35
【问题描述】:
我将 Retrofit 与 Rxjava 一起用于对服务器的请求。
我的服务器返回定义的包含数据的 json 格式和定义的消息。
服务器返回http响应。如果服务器返回成功码(200)就可以了。
但我想,如果服务器返回其他代码,我会管理该响应的正文。
例如:
服务器返回 401,我想读取服务器显示消息的响应正文。
但是当服务器其他代码时,改造调用 onError 方法,我不能使用响应体。
如何解决这个问题?
这是我的方法
'''
private void login(String username , String password){
view.setLoading();
source.loginUser(username, password)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new SingleObserver<Response<LoginResult>>() {
@Override
public void onSubscribe(Disposable d) {
disposable.add(d);
}
@Override
public void onSuccess(Response<LoginResult> loginResult) {
if (loginResult.isSuccessful()){
}
else
new AlertConfiguration(view.getViewActivity()).showMessage(loginResult.body().getMessage());
}
@Override
public void onError(Throwable e) {
if there is a problem
}
});
'''
这是我改造的接口方法
@POST("...")
Single<Response<LoginResult>> loginUser(@Query("username") String username, @Query("password") String password);
【问题讨论】:
-
你能分享两种情况下的响应吗(成功,失败)?我认为 API 返回不同的 json 对象。
标签: android android-studio observable retrofit2 rx-java2