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

10-12 01:48