首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

OKHttp源码解析--初阶

* 本篇文章 主要讲解OKHttp源码解析(3.7.0) OKHttp官网:http://square.github.io/okhttp/ github地址:https://github.com/square.../okhttp 本文大体上分为11个部分 1.OkHttp源码解析(一):OKHttp初阶 2 OkHttp源码解析(二):OkHttp连接的"前戏"——HTTP的那些事 3 OkHttp源码解析(三)...:OKHttp中阶之线程池和消息队列 4 OkHttp源码解析(四):OKHttp中阶之拦截器及调用链 5 OkHttp源码解析(五):OKHttp中阶之OKio简介 6 OkHttp源码解析(六):OKHttp...中阶之缓存基础 7 OkHttp源码解析(七):OKHttp中阶之缓存机制 8 OkHttp源码解析(八):OKHttp中阶之连接与请求值前奏 9 OkHttp源码解析(九):OKHTTP连接中三个"核心..."RealConnection、ConnectionPool、StreamAllocation 10 OkHttp源码解析(十) OKHTTP中连接与请求 11 OkHttp的感谢 本篇文章的主要内容如下

86720

彻底理解OkHttp - OkHttp 源码解析OkHttp的设计思想

OkHttp 现在统治了Android的网络请求领域,最常用的框架是:Retrofit+okhttp。...在OKhttp 源码解析之前,我们必须先要了解http的相关基础知识,任何的网络请求都离不开http。...OkHttp 源码解析 1、OkHttp 的整体框架设计 建议将okhttp的源码下载下来,用AndroidStudio 打开,整篇文章是根据源码的分析来学习okhttp的设计技巧和思想,如果本篇文章有内容分析不到位的地方...client.networkInterceptors()); } //TODO 执行流操作(写出请求体、获得响应数据) 负责向服务器发送请求数据、从服务器读取响应数据 //TODO 进行http请求报文的封装与请求报文的解析...总结 okhttp还有很多细节在本文中并没有涉及到,例如:okhttp是如何利用DiskLruCache实现缓存的、HTTP2/HTTPS 的支持等,本文主要讲解okhttp的核心设计思想,对整体有了清晰的认识之后

2.5K31

OKHttp源码解析(一)--初阶

这段时间老李的新公司要更换网络层,知道现在主流网络层的模式是RxJava+Retrofit+OKHttp,所以老李开始研究这三个项目的源代码,在更换网络层后,开始分享这个三个项目源码的分析。...* 本篇文章 主要讲解OKHttp源码解析(3.7.0) OKHttp官网 github地址 本篇文章的主要内容如下: OkHttp介绍 OkHttp使用 OkHttp流程源码跟踪 一、OKHTTP...源码流程分析 (一)、OKHTTP 同步请求debug代码跟踪: OkHttpClient client = new OkHttpClient(); Request request = new...OKHttp的封装类Request和Response为了应用程序编程方便,会把一些常用的Header信息专门提取出来,作为局部变量。...所以我们得到了OKHTTP的大体流程,如下图: ? OKHTTP大体流程.png 三、OKHTTP类详解 大体核心类主要下图: ? 核心类.png 最后给大家看一下整体的流程图 ? 流程.png

1.5K41

OkHttp源码解析(十) OKHTTP中连接与请求及总结

终于到了讲解OkHttp中的连接与请求了,这部分内容主要是在ConnectInterceptor与CallServerInterceptor中,所以本片文章主要分2部分 1、ConnectInterceptor...所以OkHttp使用了类似计数法与标记擦出法的混合使用。当连接空闲或者释放的时候,StreamAllcocation的数量就会渐渐变成0。从而被线程池检测并回收。...在OkHttp里面读取数据主要是通过以下四个步骤来实现的 1 写入请求头 2 写入请求体 3 读取响应头 4 读取响应体 OkHttp的流程是完全独立的。...那我们再来看下OkHttp网络请求的整体接口图(特别声明:这个图不是我画的) ? okhttp整体架构.png 关于OkHttp就的解析马上就要结束了,最后我们再来温习一下整体的流程图 ?

90840

Android开发神器:OkHttp框架源码解析

前言 HTTP是我们交换数据和媒体流的现代应用网络,有效利用HTTP可以使我们节省带宽和更快地加载数据,Square公司开源的OkHttp网络请求是有效率的HTTP客户端。...关于此框架的源码解析网上的教程多不胜数,此文名为源码解析,实则是炒冷饭之作,如有错误和不足之处还望各位看官指出。...拦截器 拦截器是OkHttp框架设计的精髓所在,拦截器所定义的是Request的所通过的责任链而不管Request的具体执行过程,并且可以让开发人员自定义自己的拦截器功能并且插入到责任链中 用户自定义的拦截器位于...try { listener.onOpen(RealWebSocket.this, response); String name = "OkHttp WebSocket " + request.url...相关链接 【Android教程】基于Okhttp的高可用网络框架原理解析

58110

OkHttp源码走心解析(很细 很长)

前言 本文是对OkHttp开源库的一个详细解析,如果你觉得自己不够了解OkHttp,想进一步学习一下,相信本文对你会有所帮助。...CallServerInterceptor 到了这里,客户端与服务器已经建立好了连接,接着就是将请求头与请求体发送给服务器,以及解析服务器返回的response了。...解析服务器返回的请求头,然后构建一个新的response,并返回。...结尾 到此,关于OkHttp的源码解析就介绍啦。 其实学习源码的最好方式,就是自己将代码克隆下来,然后对着使用方法,按流程,一步一步往下走。...视频: 资深架构师逐题详解Android大厂精选高频面试题之OkHttp Android(安卓)开发零基础从入门到精通之OkHttp 原文: https://juejin.cn/post/7033307467199021086

79641

OKHttp源码解析(五)--OKIO简介及FileSystem

本来我打算OKHttp源码解析(四) 是写OKHTTP的缓存,最后再单独写OKIO的,但是发现里面运用到了OKIO,而且后面讲连接的时候也要涉及到OKIO,所以我就把OKIO拿到前面来,这样大家在读缓存源码和连接的时候更清楚...本篇文章的大纲如下: 1.什么是OKIO 2.如何使用OKIO 3.Sink和Source及其实现 4.Segment和SegmentPool解析 5.不可变的ByteString 6.最核心的Buffer...解析 7.okio中的超时机制 8.okio的优雅之处 9.FileSystem 一、okio 说道okio就不能不提JDK里面io,那么咱们先简单说下JDK里面的io。...OKHttp底层也是用该库作为支持。而且okio使用起来很简单,减少了很多io操作的基本代码,并且对内存和CPU使用做了优化,他的主要功能封装在ByteString和Buffer这两个类中。...File directory) throws IOException; } 看完这段代码大家就会知道,FileSystem是一个接口,里面有一个他的实现类SYSTEM.所以可以FileSystem看成okhttp

1.8K30

Android网络编程(五)OkHttp用法全解析

相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析...Android网络编程(四)从源码解析volley 前言 讲完了Volley,我们接下来看看目前比较火的网络框架OkHttp, 它处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。...如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP,此外OkHttp还处理了代理服务器问题和SSL握手失败问题。...1.使用前准备 eclipse引入jar包地址: okhttp-3.2.0.jar okio-1.7.0.jar Android Studio 配置gradle: compile 'com.squareup.okhttp...:okhttp:2.4.0' compile 'com.squareup.okio:okio:1.7.0'

78780

Android网络编程(八)源码解析OkHttp中篇

1.引子 在了解OkHttp的复用连接池之前,我们首先要了解几个概念。 TCP三次握手 通常我们进行HTTP连接网络的时候我们会进行TCP的三次握手,然后传输数据,然后再释放连接。...Okhttp支持5个并发KeepAlive,默认链路生命为5分钟(链路空闲后,保持存活的时间)。...2.连接池(ConnectionPool)分析 引用计数 在okhttp中,在高层代码的调用中,使用了类似于引用计数的方式跟踪Socket流的调用,这里的计数对象是StreamAllocation,它被反复执行...主要变量 连接池的类位于okhttp3.ConnectionPool: 主要的变量有必要说明一下: executor线程池,类似于CachedThreadPool,需要注意的是这种线程池的工作队列采用了没有容量的...自动回收连接 okhttp是根据StreamAllocation引用计数是否为0来实现自动回收连接的。

1.1K100

OKHttp源码解析(六)--中阶之缓存基础

先进先出算法(FIFO)、最紧最小使用算法(LFU)、非最紧使用算法(NMRU)等 4.可溯源,如果没有命中缓存,就需要从原始地址获取,这个步骤叫做"回源头",CDN厂商会标注"回源率"作为卖点 PS:在OKHTTP...今天主要是讲解OKHTTP中的缓存处理,那么首先先简单介绍下为什么要用缓存 二、为什么要用缓存 缓存对移动端非常重要,使用缓存可以提高用户体验,用缓存的主要在于: 1 减少请求次数,较少服务器压力...,FORCE_CACHE表示只使用缓存中的响应,哪怕这个缓存过期了,FORCE_NETWORK这个表示只能使用网络响应 五、CacheStrategy类详解 CacheStrategy 缓存策略类 OKHTTP...首先说到了缓存就不得不提下OKHttp里面的Cache.java类和InternalCache.java那么咱们就简单的聊下这两个类 (一)、Cache.java类 Cache 1、基本特征 private...DiskLruCache.Snapshot.edit() 可以获得一个DiskLruCache.Editor对象 DiskLruCache是OKHTTP的缓存的精髓,由于篇幅限制,在下一章讲解

97850
领券