在自定義application中執(zhí)行了init()
OkHttp3
基本使用
自定義配置
攔截器
緩存和cookie
使用流程
Retrofit2
參考:http://www.reibang.com/p/308f3c54abdd
基本使用
1.根據(jù)接口文檔創(chuàng)建接口毁葱,注解方式來(lái)定義請(qǐng)求類型、參數(shù)名谐区、請(qǐng)求路徑
2.創(chuàng)建retrofit對(duì)象,通過(guò)retrofit.create()可以創(chuàng)建一個(gè)此接口的實(shí)現(xiàn)
3.通過(guò)retrofit.create()產(chǎn)生的實(shí)現(xiàn)調(diào)用接口中對(duì)應(yīng)的方法即可
4.返回一個(gè)Call對(duì)象塘慕,Call對(duì)象的使用方法和OkHttp一樣
常用注解
請(qǐng)求方式
@Post
@Get
Body編碼方式
@FormUrlEncode
@Multipart
@Streaming
參數(shù)注解
@Query @QueryMap
@Field @FieldMap
@Body
@Path @PathMap
其他注解
@Header
Converter反序列化
默認(rèn)的返回值都是Call<ResponseBody>
拿到的數(shù)據(jù)都是JSON字符串胃夏,實(shí)際使用的是JAVA Bean
這就需要轉(zhuǎn)化
適配器
retrofit返回類型必須是Call,這樣對(duì)于請(qǐng)求嵌套會(huì)造成回調(diào)地獄拼余,Call通過(guò)addCallAdapterFactory+RxJava轉(zhuǎn)換成Observable
可以簡(jiǎn)潔優(yōu)雅的實(shí)現(xiàn)異步的鏈?zhǔn)秸{(diào)用
回到哇券
初始化
初始化創(chuàng)建了一個(gè)retrofit對(duì)象闸拿,注入了自定義的OkHttpClient空盼,這個(gè)OkHttpClient主要添加了兩個(gè)攔截器HttpLoggingInterceptor
和HttpLoggingInterceptor
,前者主要負(fù)責(zé)請(qǐng)求日志(存在哪新荤?記哪些揽趾?),后者是業(yè)務(wù)相關(guān)苛骨,比如簽名
這個(gè)retrofit對(duì)象添加了RxJava2CallAdapterFactory
適配器和GsonConverterFactory
轉(zhuǎn)換器
retrofit.create(Request.class)
這里的Request是一個(gè)接口篱瞎,里面有所有請(qǐng)求方法
疑問(wèn)1:getInstance為啥要用單例模式
疑問(wèn)2:getRequest為啥要用單例模式
疑問(wèn)3:buildGson中的Adapt有什么用