作者:chaozhouzhang
一、使用
1、创建HTTP接口
首先创建HTTP的API服务接口,接口下的一个方法对应HTTP的一个请求,方法上面的注解表示请求的接口地址部分,返回类型是请求的返回值类型,方法的注解参数即是请求的参数。
public interface ApiService {
/**
* 登录:
* 账号+密码
*
* @param body
* @return
*/
@POST("/ny/consumer/login")
Observable<BaseResponse<User>> login(@Body RequestBody body);
}
2、构建Retrofit实例
配置OkHttpClient实例; 设置HTTP接口的域名地址; 添加RxJava2网络请求适配器工厂; 添加Gson数据转换器工厂;
sRetrofit = new Retrofit.Builder()
.client(sOkHttpClient)
.baseUrl(HOST)
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
3、生成ApiService的动态代理
通过Retrofit生成动态代理,用于发起HTTP请求。
sApiService = sRetrofit.create(ApiService.class);
4、发起请求 使用动态代理发起HTTP请求。
getApiService().login(requestBody);
二、解析
2.1、Retrofit实例的构建
Retrofit实例的构建使用建造者模式,包括
1、okhttp3.Call.Factory
也就是OkHttpClient,因为OkHttpClient实现了okhttp3.Call.Factory,用于发起请求。
2、Executor
用于提交回调任务,默认使用Platform.Android的MainThreadExecutor,其实现了Executor接口,并在执行回调中实现了主线程Handle