美文网首页
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总结

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