哇券技术点——请求封装

在自定义application中执行了init()

OkHttp3

基本使用

自定义配置

拦截器

缓存和cookie

使用流程

image.png

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主要添加了两个拦截器HttpLoggingInterceptorHttpLoggingInterceptor,前者主要负责请求日志(存在哪?记哪些?),后者是业务相关,比如签名
这个retrofit对象添加了RxJava2CallAdapterFactory适配器和GsonConverterFactory转换器

retrofit.create(Request.class)
这里的Request是一个接口,里面有所有请求方法

疑问1:getInstance为啥要用单例模式
疑问2:getRequest为啥要用单例模式
疑问3:buildGson中的Adapt有什么用

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容