其他分享
首页 > 其他分享> > [第三方框架]网络请求框架之Retrofit2(1)--上手指南

[第三方框架]网络请求框架之Retrofit2(1)--上手指南

作者:互联网

文章目录

Retrofit2使用步骤总结

  1. build.gradle中引用Retrofit
  2. 定义接口 ApiService,里边通过注解或者参数声明某个请求的配置信息等内容
  3. 创建Retrofit对象,设置好CallAdapterConverter
  4. 通过Retrofit对象create方法,创建接口的实例apiService
  5. 调用接口实例的方法,发起请求。

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,你可以根据业务需求进行区分,比如ApiDetailsApiUser等等。

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);
	}

}

标签:Retrofit2,请求,框架,--,创建,实例,build,ApiService,Retrofit
来源: https://blog.csdn.net/yztbydh/article/details/118891068