一、Retrofit2 概述
Retrofit框架是
Square
公司出品的目前非常流行的网络框架。效率高,实现简单,运用注解和动态代理。极大简化了网络请求的繁琐步骤,非常适合RESTful网络请求。Retrofit其实我们可以理解为OkHttp的加强版。 它也是一个网络加载框架。底层是使用OKHttp封装的。准确来说,网络请求的工作本质上是OkHttp完成,而 Retrofit 仅负责网络请求接口的封装。它的一个特点是包含了特别多注解,方便简化你的代码量。并且还支持很多的开源库(Retrofit + RxJava)
二、Retrofit2 的好处
超级解耦 我们在请求接口数据的时候,API接口定义和API接口使用总是相互影响,什么传参、回调等,耦合在一块。有时候我们会考虑一下怎么封装我们的代码让这两个东西不那么耦合,这个就是Retrofit的解耦目标,也是它的最大的特点。
可以配置不同HttpClient来实现网络请求,如OkHttp、HttpClient
支持同步、异步和RxJava
可以配置不同的反序列化工具来解析数据,如json、xml
请求速度快,使用非常方便灵活
三、Retrofit2配置
依赖:implementation 'com.squareup.retrofit2:retrofit:2.5.0'
OkHttp库依赖
由于Retrofit是基于OkHttp,所以还需要添加OkHttp库依赖:
//日志拦截器
compile 'com.squareup.okhttp3:logging-interceptor:3.5.0'
implementation 'com.squareup.okhttp3:okhttp:3.12.0'
添加网络权限
在AndroidManifest.xml中注册权限:
<uses-permission android:name="android.permission.INTERNET" />
四、Retrofit2注解
注解代码 请求格式
请求方式:
@GET GET请求
@POST POST请求
@DELETE DELETE请求
@HEAD HEAD请求
@OPTIONS OPTIONS请求
@PATCH PATCH请求
请求头:
@Headers("K:V") 添加请求头,作用于方法
@Header("K") 添加请求头,参数添加头
@FormUrlEncoded 用表单数据提交,搭配参数使用
@Stream 下载
@Multipart 用文件上传提交 multipart/form-data
请求参数:
@Query 替代参数值,通常是结合get请求的
@QueryMap 替代参数值,通常是结合get请求的
@Field 替换参数值,是结合post请求的
@FieldMap 替换参数值,是结合post请求的
请求路径:
@Path 替换路径
@Url 路径拼接
请求体:
@Body(RequestBody) 设置请求体,是结合post请求的
文件处理:
@Part Multipart.Part
@Part("key") RequestBody requestBody(单参)
@PartMap Map<String,RequestBody> requestBodyMap(多参)
@Body RequestBody requestBody(自定义参数)