美文网首页
42. OkHttp总结

42. OkHttp总结

作者: 任振铭 | 来源:发表于2021-04-08 07:57 被阅读0次

整个OkHttp功能的实现就在这五个默认的拦截器中,所以先理解拦截器模式的工作机制是先决条件。这五个拦截 器分别为: 重试拦截器、桥接拦截器、缓存拦截器、连接拦截器、请求服务拦截器。每一个拦截器负责的工作不一 样,就好像工厂流水线,最终经过这五道工序,就完成了最终的产品。

但是与流水线不同的是,OkHttp中的拦截器每次发起请求都会在交给下一个拦截器之前干一些事情,在获得了结 果之后又干一些事情。整个过程在请求向是顺序的,而响应向则是逆序

当用户发起一个请求后,会由任务分发起 Dispatcher 将请求包装并交给重试拦截器处理

1、重试拦截器在交出(交给下一个拦截器)之前,负责判断用户是否取消了请求;在获得了结果之后,会根据响应码
判断是否需要重定向,如果满足条件那么就会重启执行所有拦截器。

2、桥接拦截器在交出之前,负责将HTTP协议必备的请求头加入其中(如:Host)并添加一些默认的行为(如:GZIP 压缩);在获得了结果后,调用保存cookie接口并解析GZIP数据。

3、缓存拦截器顾名思义,交出之前读取并判断是否使用缓存;获得结果后判断是否缓存。

4、连接拦截器在交出之前,负责找到或者新建一个连接,并获得对应的socket流;在获得结果后不进行额外的处
理。

5、请求服务器拦截器进行真正的与服务器的通信,向服务器发送数据,解析读取的响应数据。

在经过了这一系列的流程后,就完成了一次HTTP请求!

Okhttp 有哪些优势?

1.支持 http2,对一台机器的所有请求共享同一个 Socket
2.内置连接池,支持连接复用,减少延迟
3.支持透明的 gzip 压缩响应体
4.响应缓存可以完全避免网络重复请求
5.请求失败时自动重试主机的其他 ip,自动重定向
6.丰富的 API,可扩展性好

Okhttp 运用了哪些设计模式?

Okhttp 运用了六种设计模式:
1.Builder模式(OkhttpClient,Request 等各种对象的创建)
2.工厂模式(在 Call 接口中,有一个内部工厂 Factory 接口。)
3.单例模式(Platform 类,已经使用 Okhttp 时使用单例)
4.策略模式(在 CacheInterceptor 中,在响应数据的选择中使用了策略模式,选择缓存数据还是选择网络访问。)
5.责任链模式(拦截器的链式调用)
6.享元模式(Dispatcher 的线程池中,不限量的线程池实现了对象复用)

相关文章

  • 42. OkHttp总结

    整个OkHttp功能的实现就在这五个默认的拦截器中,所以先理解拦截器模式的工作机制是先决条件。这五个拦截 器分别为...

  • okhttp的基础教程(磨砺营马剑威Android)

    这篇文章主要总结Android著名网络框架-okhttp的基础使用。 okhttp是什么 okhttp是Andro...

  • OkHttp源码总结

    一、OKHttp 的核心类: dispatcher分发器器类 二、OKhttp 同步方法总结: 1.创建http...

  • OkHttp总结

    package com.jimmy.sample; import android.graphics.Bitmap;...

  • OKHttp总结

    一、Ok优点: 1.支持SPDY可以合并多个请求到同一个主机的请求、连接池、GZIP和HTTP缓存 2.支持HTT...

  • OkHttp总结一

    OkHttp的总结分为两个部分,一个是基本用法,带你认识OkHttp,第二部分是源码分析带你对OkHttp进行深入...

  • okhttp教程——起步篇

    okhttp教程——起步篇 这篇文章主要总结Android著名网络框架-okhttp的基础使用,后续可能会有关于他...

  • OkHttp源码学习笔记(一)请求流程分析

    最近看了OkHttp(3.11.0)的源码,想总结下自己对OkHttp的认识,加深印象,如有不对的地方欢迎各位大佬...

  • Android面试题4(通关四)

    网络框架原理: 1:okhttp原理,这个我总结的有,可以参考okhttp 2:市面上常见的网络框架有哪些? OK...

  • okhttp使用总结

    okhttp简介 特点 1.支持http和https协议,api相同,易用;2.http使用线程池,https使用...

网友评论

      本文标题:42. OkHttp总结

      本文链接:https://www.haomeiwen.com/subject/tsgncltx.html