网络请求在 Android 中的使用非常多,在上一篇文章中我们简单的介绍了 OkHttp 的基本使用,今天我们来入门一下 Retrofit 网络请求库,在 github 上到目前为止,Retrofit 的 Star 数量已经到了 22 k,Fork 4.6 k,看到这里我们就能感觉到 Retrofit 的火热程度,所以我们有必要来认真了解一下 Retrofit 的使用
一、概述
随着 Volley 的逐渐没落,OkHttp 使用的越来越火爆,但是 Retrofit 却对 OkHttp 的依赖性很强,Retrofit 是由 Square 公司出品的针对 Android 和 Java 的网络请求客户端,其实看源码会发现,其实质上就是对 OkHttp 的封装,使用面向接口的方式进行网络请求,利用动态生成的代理类封装了网络请求的底层,Retrofit 专注于封装接口完成业务需求,OkHttp 专注网络请求的高效安全,具体来说就是应用程序通过 Retrofit 来发起网络请求,实际上是使用 Retrofit 接口层封装请求参数信息,如 url、header 等,之后由OkHttp 完成后续的请求操作,服务端返回数据之后,OkHttp 将结果交给 Retrofit,Retrofit 对结果进行相应的处理,还有很重要的就是 Retrofit 提供了对 RxJava 的支持
Retrofit GitHub 地址:https://github.com/square/retrofit
官网地址:http://square.github.io/retrofit/
二、Retrofit 2.0 与之前版本的区别
既然我们的题目是 Retrofit 2.0,那么想必 2.0 和之前的版本可能有一些不同,接下来我们就来看看有哪些具体不同的地方:
- Retrofit 1 中使用的是 RestAdapter,而到了 2.0 中使用的是 Retrofit 实例
- setEndpoint 改为 baseUrl
- Retrofit 1 中使用 setRequestInterceptor 设置拦截器,对 http 请求进行相应的处理
- Retrofit 2.0 通过 OkHttp 的拦截器拦截 http请求进行监控,重写或重试,日志打印
- converter,Retrofit1中的 setConverter,换以 addConverterFactory,用于支持 Gson 的装换
三、 Retrofit 使用详解
1. 在 Gradle 中添加依赖库,这里别忘了接着在 AndroidManifest.xml 清单文件中添加一下网络权限
compile 'com.squareup.retrofit2:retrofit:2.3.0'
<uses-permission android:name="android.permission.INTERNET"/>
2. 创建接受服务器数据的类