前言
Retrofit是Square开发的一个用于网络请求的开源库,内部封装了okhttp,并且和RxAndroid完美的兼容,使得Android的开发效率增加不少的同时也使代码变得清晰易读。
Gradle 依赖
retrofit可以很方便的使用Maven和Gradle依赖,在1.x时retrofit默认是没有引入okhttp作为http client,需要手动的依赖。但是2.0版本已经将okhttp作为retrofit的默认http client,引入retrofit2只需要在gradle中配置
1 |
|
如果你不想使用retrofit2中自带的okhttp,你也可以导入你自己的okhttp,为了避免导入冲突可以按下面的依赖:
1 |
|
retrofit2默认没有导入gson,需要gson作为转换器:
1 |
|
与RxAndroid使用需要依赖:
1 |
|
请求参数注解说明
@Query @QueryMap
Http Get请求参数:
1 |
|
等同于
1 |
|
多个请求参数
1 |
|
@Field
用于Post方式传递参数,需要在请求接口方法上添加@FormUrlEncoded,表示以表单的方式传递参数
1 |
|
@Path
用于URL占位符
1 |
|
@Header
添加http header
1 |
|
@Body
请求体,对象会被自动转化成Json格式
1 |
|
拦截器Interceptor
retrofit2默认的集成了okhttp, okhttp可以设置拦截器,比如个请求添加统一的Header
1 |
|
Post多个参数提交
如果有很多默认的参数需要每次添加时:
1 |
|
1 |
|
可以写成下面的形式:
1 |
|
1 |
|
Retrofit2 + RxAndroid 封装和使用
首先创建一个工厂类根据不通的api interface 创建其实现。这个解释起来比较抽象,可以看下面的代码:
1 |
|
另外就是网络请求的抽象回调类,继承自Subscriber
1 |
|
最后是真正的网络请求部分,如果有需求某次请求的错误信息需要单独处理,可以复写
AbsCallBackSubscriber中的onError方法。
1 |
|
最后是接口的interface
1 |
|
总结
retrofit2 + reAndroid简单的流程用法差不多介绍了,也做了个简单的封装,至于更高级的用法,还需要继续的研究,也希望大家多多交流,指出不足共同进步^v^。