深入底层,详解retrofit封装okhttp请求

Android群英传

共 2064字,需浏览 5分钟

 ·

2021-05-06 23:06

OkHttp是Square开源的轻量级框架,一款高效、快速的Android版Http client,是当下最常运用的框架之一,也是面试必问的知识方向。


 
但是这个框架也给用户留下了不少的问题:

 

•  无法适配自动进行线程的切换,消息回来需要切到主线程,主线程要自己去写。

•  调用比较复杂,需要自己进行封装。

•  用户网络请求的接口配置繁琐,尤其是需要配置请求body,请求头,参数的时候; 

•  数据解析过程需要用户手动拿到responsbody进行解析,不能复用; 

•  缓存失效:网络请求时一般都会获取手机的一些硬件或网络信息,比如使用的网络环境。同时为了信息传输的安全性,可能还会对请求进行加密。在这些情况下OkHttp的缓存系统就会失效了,导致用户在无网络情况下不能访问缓存。


而解决这些问题的首选方案就是用 Retrofit ,基于OkHttp的一个高解耦的网络框架。


 
一般来说是这样的组合

 

大家一般都推荐RxJava+Retrofit+OkHttp框架。


  • Retrofit主要负责应用层面的封装,比如:具体的请求、线程切换、数据转换。主要面向开发者,方便使用,比如请求参数,响应数据的处理,错误处理等;

  • OkHttp负责请求的过程;

  • RxJava负责异步,各种线程之间的切换


搭配使用非常便利。


下面让我们来进行一个对比,看一下,Retrofit是如何来封装Okhttp请求的。




大体的流程都是:


创建网络请求实体client->构建真正的网络请求-> 将网络请求方案与真正的网络请求实体结合构成一个请求Call->执行网络请求->处理返回数据->处理Android 平台的线程问题。


通过对比我们可以发现:


1. OkHttp创建的是OkhttpClient,然而retrofit创建的是Retrofit实例
2. 构建蓝色的Requet的方案,retrofit是通过注解来进行的适配
3. 配置Call的过程中,retrofit是利用Adapter适配的Okhttp的Call
4. 相对okhttp,retrofit会对responseBody进行自动Gson解析
5. 相对okhttp,retrofit会自动的完成线程的切换。


面试的时候,以上Retrofit和Okhttp相关的知识点一般都会被问到。

 

 
下面是牛客上的部分面经分享

 



通过上面的面试题分享我们不难发现,大厂面试很多题目都是问的基础,但是还是有很多人回答不上来,每年都有很多朋友挂在上面,归根结底,就是基础知识掌握的不够牢靠。


本次特邀前爱奇艺高级工程师lance老师前三星/小米高级研发经理Alvin老师给大家带来《OkHttp源码分析与Retrofit中的注解》的精品小课,用两节课的时间带你深度解析OkHttp源码与Retrofit封装,明白Retrofit的原理



 
报名就送


1042页阿里大神的《设计思想与框架学习笔记

Android面试宝典:《2056页Android面试题大合集(含答案解析)

 
适合人群

 

  1. 具备移动开发基础;

  2. 具备一定自学能力;

  3. 立志成为高级工程师、架构师的安卓开发者;

 
课程安排

>>授课讲师


 Lance老师 

某游戏公司主程,前爱奇艺高级工程师


专精领域:移动平台开发,NDK、架构、性能优化;


 Alvin老师 

前三星高级研发经理,国内首批Android底层技术导航人


专精领域:精通Android FrameWork源码及性能优化;三星手机Rom核心架构设计,专注NDK底层设计与开发。


>>课程排期

 

5月7日:看架构师解剖retrofit源码内核

  1. retrofit如何将接口转变成网络请求的原理

  2. 24种设计模式中的9种是如何构建Retrofit架构体系的

  3. 以不变应万变的网络请求架构搭建方案

  4. retrofit架构设计优化方案

  5. retrofit这个SDK的架构设计原理


5月8日:一节课真正读懂OkHttp

  1. 使用OkHttp几行代码,内部是怎么完成一次请求的?

  2. 学完线程池你会用吗?OkHttp中的线程池

  3. 不止是概念,拦截器对责任链设计模式的实战

  4. okhttp为什么会使用okio而不是用普通io

  5. Http怎样才能使用缓存?

  6. 怎么复用Socket?连接池实现原理

 

 
立即报名

 

文中资料免费赠送训练营学员

加助手兰兰微信报名训练营


立即领取
(如遇扫码频繁受限,点击左下角的阅读原文



浏览 22
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报