Retrofit2.0——Android网络请求库使用简介

Retrofit2.0使用简介

一、前提了解——OkHttp网络请求库
在这里插入图片描述
在没有OkHttp等其他网络请求库的时候,网络请求是通过HttpURLConnection或者HttpClient来实现的,。
HttpClient功能强大并且API数量众多,但是正由于庞大的API数量使得很难在不破坏兼容性的情况下对它进行升级和扩展
HttpURLConnection是一种多用途、轻量级的HTTP客户端,提供的API比较简单,可以容易地去使用和扩展。但是在Android2.2之前HttpURLConnection一直存在一些令人厌烦的bug。比如说对一个可读的InputStream调用close()方法时,就有可能会导致连接池失效。
因此,一般推荐是在Android2.2之前,使用HttpClient,因为bug较少;在Android2.2之后推荐使用HttpURLConnection,因为API简单、体积小并且有压缩和缓存机制。
虽然有上面两个类来实现网络请求,但是比起OkHttp就弱爆了,因为OkHttp不仅具有高效的请求效率,并且还提供了很多开箱即用的网络疑难杂症解决方案
在这里插入图片描述

  1. 支持HTTP/2:HTTP/2通过使用多路复用技术在一个单独的TCP连接上支持并发,通过在一个连接上一次性发送多次请求来发送或接收数据。
  2. 如果HTTP/2不可用,连接池复用技术也可以极大减少延迟。
  3. 支持GZIP,可以压缩下载体积。
  4. 响应缓存可以直接避免重复请求
  5. 从很多常用的连接问题中自动恢复
  6. 如果服务器配置了多个IP地址,当第一个IP连接失败时,OkHttp会自动尝试下一个IP
  7. OkHttp还处理了代理服务器问题和SSL握手失败问题。
    此外,由于目前大范围使用的协议为HTTP/1.1,HTTP/2的应用不是很广泛,因此为了应对这个问题,HTTP/1.1引入了Upgrade机制。
    另外从Android4.4开始,HttpURLConnection的内部实现已经替换成OkHttp来实现。
    以下例子为同步GET请求的实现(更多OkHttp的使用方法可以参照:OkHttp使用完全教程或者OkHttp使用教程):
    在这里插入图片描述

二、Retrofit2.0
Retrofit是一个RESTful的HTTP网络请求框架的封装。Retrofit之所以强大的原因在于:

  1. 它是基于OkHttp并且遵循着Restful API设计风格。
  2. 支持同步和异步网络请求
  3. 支持多种数据解析和序列化格式(Gson、Json、XML、Protobuf)。
  4. 提供对RxJava的支持
  5. 简洁易用:通过注解配置网络请求参数、采用大量设计模式简化使用。
  6. 可拓展性好:功能模块高度封装、解耦彻底。
    Retrofit网络请求的工作本质是OkHttp完成的,其只负责网络请求接口的封装,即App应用程序通过Retrofit接口层封装请求参数、Header、Url等信息,之后由OkHttp完成后续的请求操作。
    在服务端返回数据后,OkHttp将原始数据交给Retrofit,Retrofit根据用户的需求将结果进行解析
    在这里插入图片描述

三、Retrofit简单使用以及注解的简单介绍
使用Retrofit的步骤共有7个:
步骤1:添加Retrofit库的依赖
步骤2:创建接收服务器返回数据的类
步骤3:创建用于描述网络请求的接口
步骤4:创建Retrofit实例
步骤5:创建网络请求接口实例并配置网络请求参数
步骤6:发送网络请求(异步/同步)
例子:

  1. 创建接收服务器返回数据的类
    在这里插入图片描述
    接收服务器返回数据的类的创建,需要根据后台返回的JSON数据来进行定义
  2. 创建用于描述网络请求的接口
    注解里面传入的为网络请求的部分URL地址,Retrofit把网络请求的URL分为两个部分:一部分放在Retrofit对象里,另一部分放在网络请求接口里。如果接口里的url是一个完整的网址,那么放在Retrofit对象里的URL可以忽略
    在这里插入图片描述
  3. 创建Retrofit对象、网络请求接口的实例以及发送网络请求
    如下为发送异步网络请求的示例,一般而言Retrofit会结合RxJava一起进行使用。当结合RxJava使用的时候需要在创建Retrofit对象的使用使用addCallAdapterFactory()方法,以支持RxJava平台。
    在这里插入图片描述
    支持RxJava平台的Retrofit对象创建如下:
    在这里插入图片描述
    值得一提的是,Retrofit支持多种数据解析方式,数据解析器有:Gson、Jackson、Simple XML、Protobuf、Moshi、Wire以及Scalars;Retrofit同时支持多种网络请求适配方式:guava、Java8以及RxJava(Android默认情况下的适配器为CallAdapter)。
    在这里插入图片描述
    下图为Retrofit网络请求接口的注解类型:
    在这里插入图片描述
    具体每个注解是使用方式可以参照:这是一份很详细的Retrofit2.0使用教程(含实例讲解)
    下面对注解进行简单的汇总:
    1 . 网络请求方法注解
    在这里插入图片描述
    2 . 标记类注解
    在这里插入图片描述
    3 . 网络请求参数注解
    在这里插入图片描述

OkHttp参考资料:OkHttp使用完全教程
OkHttp使用教程
OkHttp的Github官方文档
Retrofit参考资料:这是一份很详细的Retrofit2.0使用教程(含实例讲解)
Retrofit的Github官方文档

猜你喜欢

转载自blog.csdn.net/weixin_38196407/article/details/87784224