Retrofit2.1.0的基本使用(一)

Retrofit介绍

A type-safe HTTP client for Android and Java
Retrofit是Square推出的一款开源的HTTP客户端库,基于REST风格

在module的build.gradle添加依赖

app/build.gradle

1
compile 'com.squareup.retrofit2:retrofit:2.1.0'

在Manifest.xml中声明网络权限

1
<uses-permission android:name="android.permission.INTERNET"/>

声明接口

Retrofit可以将HTTP API转换成接口
首先声明一个我们需要的服务接口,比如IuserService

1
2
3
4
public interface IuserService {
@GET("users/{id}")
Call<ResponseBody> showUserInfo(@Path("id") String userId);
}

接口参数

在这个接口中,通过注解和参数声明需要的HTTP操作以及请求如何处理
每一个注解后面提供了HTTP的请求类型以及相对URL。Retrofit提供了GET,POST,PUT,DELETE,HEAD五个操作,Call<>里面包含的是返回的类型,后面接着的是要被调用的方法名及参数。

1
2
@GET("users/{id}")
Call<ResponseBody> showUserInfo(@Path("id") String userId);

生成Retrofit实例

Retrofit会把baseUrl和接口中的url拼接起来,并且能自动帮我们创建需要的类。

1
2
3
4
5
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
.build();
IuserService mIuserService = retrofit.create(IuserService.class);

注册请求

1
Call<ResponseBody> call = mIuserService.showUserInfo(userId);

异步调用

使用call.enqueue进行异步调用,覆盖onResponse和onFailure两个方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
call.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, retrofit2.Response<ResponseBody> response) {
try {
Log.i("USERINFO", "response=" + response.body().string());
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
Log.i("FAILURE", "onFailure=" + t.getMessage());
}
});

------ 本文结束 ------

版权声明


BillyYccc's blog by Billy Yuan is licensed under a Creative Commons BY-NC-SA 4.0 International License.
本文原创于BillyYccc's Blog,转载请注明原作者及出处!