Rx Android 我如何在改造 2 中检查 204 代码
Rx Android how do I check 204 code in retrofit 2
我有一个请求调用,如果用户已订阅某个事件,则可以 return 200,如果用户未订阅,则为 204,如果事件不再存在,则为 404。
我正在使用改造 2 和 Observables 来调用服务器。
如何检查我的代码是 200 还是 204?
如果我收到 404,我知道这是一个错误,我很容易处理它,但我的响应不同,我不知道如何获得实际代码。
mApiEvents.isSubscribed(idEvent, uniqueId )
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getLifecycleProvider())
.flatMap( data-> {
return ?? //How do I check if I got 200 or 204?
}
.subscribe(new LifecycleObserver<Boolean>(){
@Override
public void onNext(Boolean aBoolean) {
}
@Override
public void onError(Throwable e) {
//404 or another error
}
}
)
不是你真正问的,但你可以检查 isEmpty(),因为 204 的主体是空的,改造不会发出任何项目,你会收到一个没有任何 onNext 的 onComplete。
我终于找到了,最后解决方案非常简单。
我们必须使用 Retrofit2 响应 class 来包装我们的数据。
https://square.github.io/retrofit/2.x/retrofit/retrofit2/Response.html
@POST("some/endpoint")
Observable<Response<Data>> getData(...)
然后我们可以用 flatMap 操作它并检查 Code
getData()
....
.flatMap( response -> {
if(response.code() == 200)
//do something
else
//do something else
}
我有一个请求调用,如果用户已订阅某个事件,则可以 return 200,如果用户未订阅,则为 204,如果事件不再存在,则为 404。
我正在使用改造 2 和 Observables 来调用服务器。
如何检查我的代码是 200 还是 204?
如果我收到 404,我知道这是一个错误,我很容易处理它,但我的响应不同,我不知道如何获得实际代码。
mApiEvents.isSubscribed(idEvent, uniqueId )
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.compose(getLifecycleProvider())
.flatMap( data-> {
return ?? //How do I check if I got 200 or 204?
}
.subscribe(new LifecycleObserver<Boolean>(){
@Override
public void onNext(Boolean aBoolean) {
}
@Override
public void onError(Throwable e) {
//404 or another error
}
}
)
不是你真正问的,但你可以检查 isEmpty(),因为 204 的主体是空的,改造不会发出任何项目,你会收到一个没有任何 onNext 的 onComplete。
我终于找到了,最后解决方案非常简单。
我们必须使用 Retrofit2 响应 class 来包装我们的数据。
https://square.github.io/retrofit/2.x/retrofit/retrofit2/Response.html
@POST("some/endpoint")
Observable<Response<Data>> getData(...)
然后我们可以用 flatMap 操作它并检查 Code
getData()
....
.flatMap( response -> {
if(response.code() == 200)
//do something
else
//do something else
}