使用RxJava2和Retrofit2时如何访问响应头?

Rat*_*tik 6 android github-api retrofit2 clean-architecture rx-java2

前提

我正在开发一个简单的应用程序,我想在RecyclerView中列出用户的GitHub存储库.我在构建它时使用作为我的端点.

问题

我面临的问题是GitHub API一次只返回30个repos.为了获得更多,我可以per_page=100在我的查询字符串中附加一个(100是最大值); 但是,我们如何处理超过100个回购的用户?

API 文档提供的解决方案是next;从"链接"响应标头获取URL以进行第二次API调用.

怎么会这样呢?谢谢!

eso*_*jem 8

Response课程将让你访问头.GitHub客户端将有一个方法,如:

@GET("/search/code")
Observable<Response<T>> getUser(...)
Run Code Online (Sandbox Code Playgroud)

在里面onNext(),你会做类似的事情:

@Override
public void onNext(Response<T> response) {
    String next = response.headers().get("next");
}
Run Code Online (Sandbox Code Playgroud)

  • Observable&lt;Response&lt;T&gt;&gt; 告诉我 `Type 'okhttp3.Response' 没有类型参数。` 所以,我尝试使用 Observable&lt;Response&gt; 进行调用,结果导致 `'okhttp3.Response' 无效响应体类型。你的意思是 ResponseBody?` 错误。想法? (2认同)
  • 您需要 [Retrofit 中的响应类](https://github.com/square/retrofit/blob/master/retrofit/src/main/java/retrofit2/Response.java)。不行http。 (2认同)