【发布时间】:2018-10-27 10:54:04
【问题描述】:
我有一个 Web 服务,它返回一个主题的用户列表,如果该主题没有任何用户,它只会返回 HTTP 代码 204(无内容)。
这是我对该服务的改造 2 调用(在 Kotlin 中)
@GET("/user/{topic}") fun getAllUserFor(@Path(value="topic",encoded=true) topic:String) :Observable<List<User>>
我的执行是:
fun getAllUsers(topic: String, onSuccess: Consumer<List<User>>, onFail:Consumer<Throwable>){
val api = NetworkLayer.getUserApi()
api.getAllUserFor(topic)
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(onSuccess,onFail)
}
工作正常,除非该主题没有用户,因为当没有用户时,服务器会以代码 204 作为异常来响应。
我正在使用 ScalarsConverterFactory 和 GsonConverterFactory 来解析带有 Retrofit2 的 Json 响应。
here 讨论了类似的问题,但他们的服务器仅使用 http 代码响应,没有任何内容!在我的情况下,当有一个或多个用户时,服务器将返回一个用户列表作为 Json 主体,当没有用户时返回 204,所以我需要处理这两种情况以及其他常见的 http 错误。
【问题讨论】:
标签: android rx-java retrofit2 okhttp