【问题标题】:Use response header as part of returned object with Retrofit通过 Retrofit 使用响应标头作为返回对象的一部分
【发布时间】:2018-02-16 12:34:23
【问题描述】:

我正在使用 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>>

我想返回 Single,其中 SearchResult 是:

SearchResult {
 var total: Int
var events: List<Event>
}

这可能吗?

【问题讨论】:

  • Retrofit 是一个类型安全的 restful 库。您可以了解更多信息stackoverflow.com/questions/36210649/…
  • 这有什么帮助?
  • 这意味着您可以按照下面描述的方式进行操作,这是@LordRaydenMK 提供的不错的解决方案。

标签: android gson retrofit rx-java rx-java2


【解决方案1】:

修改您的界面以返回Single&lt;Response&lt;List&lt;Event&gt;&gt;&gt;,而不是Single&lt;List&lt;Event&gt;&gt;

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 1970-01-01
    • 2018-06-15
    • 2018-02-08
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    相关资源
    最近更新 更多