android - 在 Android 中使用 Retrofit 2.0

标签 android retrofit

由于我对使用像 Retrofit 这样的 Android 第三方 HTTP 库还很陌生,所以有几个问题我想请教您,谁可以帮助我。

从 Retrofit 1.9 到 2.0 的过渡似乎最近发生了很大的变化,例如 API 的变化。所以我找不到使用该库的合适文档,即使在它自己的网页上也是如此。

当谈到在服务器上实现注册用户的 HTTP 请求时,根据网页,似乎首先要做的是创建一个定义角色的接口(interface)(例如 POST、GET 等)。例如:

public interface GitHubService {
  @GET("/users/{user}/repos")
  Call<List<Repo>> listRepos(@Path("user") String user);
}

看来我应该创建一个 Retrofit 实例来连接到服务器并使用

Retrofit retrofit = new Retrofit.Builder()
    .baseUrl("https://api.github.com")
    .build();

GitHubService service = retrofit.create(GitHubService.class);

我真正想知道的是,

  1. 上面泛型中的Repo是什么意思?这是我仍然无法弄清楚的第一件事。

  2. @POST 或@GET 等注释后面的括号中应该写什么?是服务器URL下的子目录吗?根据上面的示例代码,@GET 注释是否声明 listRepos 方法从“用户”路径或其他什么地方获取用户值?这太令人困惑了..

拜托,我对这个世界真的很陌生,所以我非常需要你的帮助。提前致谢。

最佳答案

  1. 本例中的“Repo”表示 Github 上的存储库。 Retrofit 自动反序列化对 Java POJO 的 JSON 响应。该示例从 Github API 获取有关 Github 存储库的信息,获取的存储库信息由 Repo 类/Repo 对象列表表示。您必须提供您自己的类表示您从服务器/API 获取的数据。
  2. Does it mean a subdirectory under the server URL?

基本上,是的。它是您尝试在使用 baseUrl 指定的服务器上访问的资源的路径/Uri。

在这种情况下,我们有 baseUrl https://api.github.com。我们附加路径 /users/{user}/repos。方法

@GET("/users/{user}/repos")
      Call<List<Repo>> listRepos(@Path("user") String user);

将用户 ID 作为参数并将 {user} 替换为该参数。

因此,如果您使用参数 JakeWharton 调用该方法,完整的 Uri 是

https://api.github.com/users/JakeWharton/repos

您可以从浏览器调用它以查看响应。 您必须更改这些 Url/Uri 字符串以匹配您要访问的 API。

.

关于android - 在 Android 中使用 Retrofit 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32771021/

相关文章:

java - 我在对象中收到 json 响应,但我想在 Json 数组中

java - 重新创建 Activity 时保留变量值

java - Android ImageView 全屏

Android Studio - 每次运行时全新安装应用程序

java - List<Trail> 无法转换为 Context

java - 如何从 Retrofit onResponse 获取数据

android - 如何避免为每个属性键入 "android"?

android - 无法在 Android SDK 中查看 Systrace 工具生成的 HTML 跟踪报告

json - Square 的 Retrofit 响应解析逻辑 : streaming?

android - 如何信任具有交叉签名根的 SSL 证书,在 Android <= 5 上已过期