文章目录
Retrofit2使用步骤总结
- 在
build.gradle
中引用Retrofit
库 - 定义接口 ApiService,里边通过注解或者参数声明某个请求的配置信息等内容
- 创建Retrofit对象,设置好
CallAdapter
与Converter
- 通过Retrofit对象的
create
方法,创建接口的实例apiService
- 调用接口实例的方法,发起请求。
1、在build.gradle
中引用Retrofit
库
// app-module
// Retrofit库
implementation "com.squareup.retrofit2:retrofit:2.9.0"
// gson-Converter
implementation "com.squareup.retrofit2:converter-gson:2.9.0"
// 如果网络原因下载库失败,可以使用阿里云 maven镜像,在项目级别的build.gradle中加入如下
repositories {
google()
......
maven { url 'https://maven.aliyun.com/repository/jcenter' }
}
加完依赖之后,点击sync
将库拉取到本地。
2、定义ApiService
在Retrofit
中,需要使用接口(interface
)来定义每一个请求方法。
PS: 名字可以任何名字,此处笔者采用了ApiSerivce
,你可以根据业务需求进行区分,比如ApiDetails
、ApiUser
等等。
public interface ApiService {
@GET("users/{user}/repos") // 定义请求方法,{user}会被替换成方法传进来的参数值
Call<List<Repo>> listRepos(@Path("user") String user);
}
3、创建Retrofit
对象、创建API实例,发起请求
由于在项目中,基本上一个Retroft
对象就可以,所以在此处使用单例的方式创建Retrofit
对象,当然,如果有业务需要创建多个Retrofit
对象也可以,比如当有多个BaseURL
的时候
PS: BaseURL
可以粗暴的理解为域名,大多数的App
都是只访问自家的域名,所以只有一个BaseUrl
,但是不排除有多个域名的需求,不同的Api在不同的域名下。
注意,BaseURL
必须以/
结尾才行,不然会报错哦。
public class ApiServiceManager {
private volatile static ApiServiceManager apiServiceManger = null;
private Retrofit retrofit;
private ApiService apiService;
private ApiServiceManager() {
//⒈ 创建Retrofit实例
retrofit = new Retrofit.Builder()
.baseUrl("https://api.github.com/")
// 将Json的结果转换为对应的对象
.addConverterFactory(GsonConverterFactory.create())
.build();
// 2. 创建ApiService实例
apiService = retrofit.create(ApiService.class);
}
public void listRepos(Callback<List<Repo>> callback) {
Call<List<Repo>> repos = apiService.listRepos("octocat");
// 3. 发起请求,两种方式:execute,不切换线程,在当前线程执行。
// enqueue,切换线程,后台执行。
// 在当前线程执行网络请求
// Response<List<Repo>> result = repos.execute();
// 异步步请求,一般使用下面的方式
repos.enqueue(callback);
}
}