一.简介
Retiofit SQUARE公司开发的,是一个符合RESTFUL设计风格请求网络封装的框架,其底层进行网络请求用的是OKHTTP
Retrofit就是一个网络请求框架的封装,底层的网络请求默认使用的Okhttp,本身只是简化了用户网络请求的参数配置等,还能与Rxjava相结合,使用起来更加简洁方便。
二.功能
1.通过注解配置网络请求参数
2. 支持同步异步的请求
3.可以添加多个解析器,支持多种的数据类型解析
4.还提供了RXJava的支持
三.优点
1.简洁易用:通过注解配置网络请求参数,而且使用了大量的设计模式简化框架
2.可扩展性好:功能模块高度封装,解耦彻底,比如自定义converters解析器等
四.过程
App应用程序通过 Retrofit 请求网络,实际上是使用 Retrofit 接口层封装请求参数、Header、Url 等信息,之后由 OkHttp 完成后续的请求操作
在服务端返回数据之后,OkHttp 将原始的结果交给 Retrofit,Retrofit根据用户的需求对结果进行解析
五.使用
步骤1:添加Retrofit库的依赖
步骤2:创建 接收服务器返回数据 的类
步骤3:创建 用于描述网络请求 的接口
步骤4:创建 Retrofit 实例
步骤5:创建 网络请求接口实例 并 配置网络请求参数
步骤6:发送网络请求(异步 / 同步)
封装了 数据转换、线程切换的操作
步骤7:处理服务器返回的数据
涉及到的设计模式
外观模式,构建者模式,工厂模式,代理模式,适配器模式,策略模式,观察者模式
源码分析:
我们先看下retrofit.create()方法
这里用到了一个公共技术点之 Java 动态代理,create 方法传入一个 Class ,这个 Class 对象就是请求网络的接口对象
…
ServiceMethod<Object, Object> serviceMethod =(ServiceMethod<Object, Object>) loadServiceMethod(method);
OkHttpCall<Object> okHttpCall = new OkHttpCall<>(serviceMethod, args);
return serviceMethod.callAdapter.adapt(okHttpCall);
重点看这三行代码
第一行 loadServiceMethod(method)
单例创建了一个serviceMothod的对象
第二行 new OkHttpCall<>(serviceMethod, args)
创建了一个 OkHttpCall ,serviceMethod 和 args 是 OkHttpCall 的成员函数。
https://blog.csdn.net/qq_37199105/article/details/78804556