在自定义application中执行了init()
OkHttp3
基本使用
自定义配置
拦截器
缓存和cookie
使用流程
Retrofit2
参考:https://www.jianshu.com/p/308f3c54abdd
基本使用
1.根据接口文档创建接口,注解方式来定义请求类型、参数名、请求路径
2.创建retrofit对象,通过retrofit.create()可以创建一个此接口的实现
3.通过retrofit.create()产生的实现调用接口中对应的方法即可
4.返回一个Call对象,Call对象的使用方法和OkHttp一样
常用注解
请求方式
@Post
@Get
Body编码方式
@FormUrlEncode
@Multipart
@Streaming
参数注解
@Query @QueryMap
@Field @FieldMap
@Body
@Path @PathMap
其他注解
@Header
Converter反序列化
默认的返回值都是Call<ResponseBody>
拿到的数据都是JSON字符串,实际使用的是JAVA Bean
这就需要转化
适配器
retrofit返回类型必须是Call,这样对于请求嵌套会造成回调地狱,Call通过addCallAdapterFactory+RxJava转换成Observable
可以简洁优雅的实现异步的链式调用
回到哇券
初始化
初始化创建了一个retrofit对象,注入了自定义的OkHttpClient,这个OkHttpClient主要添加了两个拦截器HttpLoggingInterceptor
和HttpLoggingInterceptor
,前者主要负责请求日志(存在哪?记哪些?),后者是业务相关,比如签名
这个retrofit对象添加了RxJava2CallAdapterFactory
适配器和GsonConverterFactory
转换器
retrofit.create(Request.class)
这里的Request是一个接口,里面有所有请求方法
疑问1:getInstance为啥要用单例模式
疑问2:getRequest为啥要用单例模式
疑问3:buildGson中的Adapt有什么用