android - Rx Android 我如何在改造 2 中检查 204 代码

标签 android retrofit2 rx-android

我有一个请求调用,如果用户已订阅某个事件,它可以返回 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
                   }
               }
        )

最佳答案

我终于找到了,最后解决方案非常简单。

我们必须使用 Retrofit2 Response 类来包装我们的数据。

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
  }

关于android - Rx Android 我如何在改造 2 中检查 204 代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39027630/

相关文章:

android - 如何通过命令行在 Linux 中更新 Android SDK

android - 当我在改造中重定向时如何包含标题

android - SDK < 21 上的改造 2

android - RxJava 和-然后-什么时候

Android 应用程序在某些手机上使用的 RAM 多于最大堆大小

java - Android改造url开头的查询

"Type of anim"上的 Android studio building signed APK 错误

java - 为什么我在使用 Retrofit2 时得到 "Type okhttp3.Call does not have type parameters"?

android - MVP 和 RxJava - 在 Android 上处理方向变化

java - 如何创建自定义订阅者?