通过 Retrofit 使用响应标头作为返回对象的一部分

Gab*_*tin 3 android gson rx-java retrofit rx-java2

我正在使用 Retrofit + RxJava + GSON 来使用 REST API 进行搜索。API 的构建方式是,它返回对象列表和总结果作为响应 ( total-results) 中的标头:

@GET("search/events?eager=[competition,tv]")
    fun searchEvents(@Query("q") q: String, @Query("category") category: String, @Query("order") order: String): Single<List<Event>>
Run Code Online (Sandbox Code Playgroud)

我想返回 Single,其中 SearchResult 是:

SearchResult {
 var total: Int
var events: List<Event>
}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

Lor*_*nMK 6

而不是Single<List<Event>>修改你的接口来返回Single<Response<List<Event>>>

Response类包含 API 调用返回正文和标头。

您可以使用 检查是否成功,response.isSuccessful()然后可以使用 访问正文response.body()并使用 访问标题response.headers()

要从那里获得所需的输出,您可以使用map()RxJava。