RxJava - Retrofit不向Rx提出请求

时间:2018-03-20 13:24:20

标签: kotlin rx-java retrofit

我正在使用sed --posix学习RxJava,我试图合并两个请求。但它没有向Retrofit api提出请求。它只是一个研究案例的简单代码

这就是我现在所拥有的,我做错了什么?

getToken

1 个答案:

答案 0 :(得分:1)

您只是定义了Observable,但您没有订阅它,因此该流根本无法获取数据:

apiManager.getToken(body)
    .subscribeOn(Schedulers.io())
    .map { people -> saveUser(people) }
    .doOnNext { car -> Log.d("car", car.toString()) }
    .flatMap { car -> Observable.from(car!!.items) }
    .flatMap { carId ->
        val header = HashMap<String, String>()
        header.put("Authorization", "Bearer " + user!!.authorization)
        apiManager.getCarItens(header, carId.id!!)
    }
    .doOnCompleted { showUser(user) }
    .subscribeOn(AndroidSchedulers.mainThread())
    .subscribe() // This is what you were missing!

我建议你清理一些东西,但是:

  1. 避免使用!!:如果对象为空,它将导致Exception,如果您没有处理它们,它将会冒泡(您可以,onError parameter to subscribe < / LI>
  2. 使用doOnCompleted参数代替onCompleted而不是subscribe,这使得它在错误处理旁边,并且更容易阅读