android retrofit入门,retrofit2使用详解之入门

前言

在本教程中,我们将了解Retrofit 的基础知识以和创建一个android HTTP client请求REST API。

1. Retrofit是什么?

Retrofit是一个类型安全的REST客户端,适用于android和Java开发应用。Retrofit可将HTTP 网络接口转换为Java接口。

Retrofit android 版使用非常简单。它本质上允许我们将API调用视为简单的Java方法调用,因此我们只定义要访问的URL和请求/响应参数的类型作为Java类。

整个网络调用+ JSON / XML解析完全由Retrofit处理(例如Gson用于JSON解析)。它允许向远程Web服务器发出同步或异步HTTP请求。

2. Retrofit 安装

我们的项目中要使用Retrofit 2,我们将在构建文件中包含以下依赖项。在本教程中,我们将以JSON格式发送和接收数据,因此我们也添加了converter-gson依赖项。

maven 方式:

$title(pom.xml)

com.squareup.retrofit2

retrofit

2.6.1

com.squareup.retrofit2

converter-gson

2.6.1

gradle 方式:

$title(build.gradle)

dependencies {

compile 'com.squareup.retrofit2:retrofit:2.6.1'

compile 'com.squareup.retrofit2:converter-gson:2.6.1'

}

在Android应用程序中,我们必须启用Internet权限,因为Retrofit会对Internet上某个服务器上运行的API执行HTTP请求。

$title(AndroidManifest.xml)

3. REST API建模

3.1. REST API 接口

使用Retrofit的下一步是对REST API建模,我们将会在应用程序中使用它。下面举例说明有一个这样的API可以免费使用

HTTP GET https://reqres.in/api/users/2

Response:

{

"data": {

"id": 2,

"email": "janet.weaver@reqres.in",

"first_name": "Janet",

"last_name": "Weaver",

"avatar": "https://s3.amazonaws.com/uifaces

/faces/twitter/josephstein/128.jpg"

}

}

3.2. 业务数据模型

假设我们只需要消费id,姓名和电子邮件字段,而不想使用头像字段。字段数量不匹配,Gson转换器并不会报错,他会解析我们模型中指定的字段。(国内的fastjson也一样效果)

$title(UserApiResponse.java)

public class UserApiResponse

{

private User data;

//Setters and getters

public String toString() {

return "UserApiResponse [data=" + data + "]";

}

}

$title(User.java)

public class User

{

private long id;

private String first_name;

private String last_name;

private String email;

//Setters and getters

@Override

public String toString() {

return "User [id=" + id + ", "

+ "first_name=" + first_name + ", "

+ "last_name=" + last_name + ", "

+ "email=" + email + "]";

}

}

3.3. 业务接口

现在,我们可以使用Retrofit注解来创建具有所需映射信息和请求/响应类的服务接口。

$title(UserService.java)

import retrofit2.Call;

import retrofit2.http.GET;

import retrofit2.http.Path;

public interface UserService {

@GET("/api/users/{id}")

public Call getUser(@Path("id") long id);

}

我们可以使用适当的改造注释为每个HTTP方法:@GET,@POST,@PUT,@DELETE,@PATCH或@HEAD。

在方法注释中,我们应该指定REST资源的相对端点URL。在这种情况下,它是 - "/api/users/{id}"。

在方法声明中,我们必须将服务器所期望的数据返回到一个类型化的Retrofit Call类中。

在方法参数中,我们可以传递路径和查询参数,并在PUT / POST请求中请求正文。

4. Retrofit 2 实际使用

现在是时候使用create Retrofit REST客户端并进行实际的API调用。

在这个例子中,我们使用流畅的API与Retrofit.Builder和Retrofit实例。

我们提供API和转换器类型的基本URL。

$title(UserServiceClient.java)

import okhttp3.OkHttpClient;

import retrofit2.Call;

import retrofit2.Response;

import retrofit2.Retrofit;

import retrofit2.converter.gson.GsonConverterFactory;

$title(UserServiceClient.java)

public class UserServiceClient

{

public static void main(String[] args)

{

OkHttpClient.Builder httpClient = new OkHttpClient.Builder();

Retrofit retrofit = new Retrofit.Builder()

.baseUrl("https://reqres.in/")

.addConverterFactory(GsonConverterFactory.create())

.client(httpClient.build())

.build();

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

// Calling '/api/users/2'

Call callSync = service.getUser(2);

try {

Response response = callSync.execute();

UserApiResponse apiResponse = response.body();

System.out.println(apiResponse);

} catch (Exception ex) {

ex.printStackTrace();

}

}

}

运行上面的程序,观察控制台中打印的输出。

$title(out)

UserApiResponse [data=User [

id=2,

first_name=Janet,

last_name=Weaver,

email=janet.weaver@reqres.in]]

在上面的例子中,我们已经进行了同步请求。我们将在接下来的教程中会讲解异步请求。

总结

在本教程中,我们了解了Retrofit 2并为REST客户端构建了一个使用JSON有效负载的hello world应用程序。我们还了解了Retrofit库的基础知识。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值