Android OkHtttp 流程分析
文章目录概述核心类执行流程请求发起拦截器链连接池异步任务调度器概述OkHttp 是一个由 Square 公司开发的高效、简洁的 HTTP 客户端库。OkHttp 包含一个连接池可以复用 TCP 连接避免了多次握手的开销。自动处理 GZip、HTTP 缓存、响应重试。核心类OkHttpClient核心类用于发起网络请求和接收响应。可以通过 OkHttpClient.Builder 配置连接超时、读写超时、拦截器等。Request表示一个 HTTP 请求配置 URL、请求方法、请求头、请求体等。Call通过 Request 创建一个 Call 实例表示一个即将执行或正在执行的请求。Response表示返回的对象包含响应状态码、响应头、响应体等。执行流程请求发起通过 OkHttpClient 和 Request 创建一个 Call 实例。调用 call.enqueue()。最终调用 getResponseWithInterceptorChain()拦截器链责任链模式将请求拆分为多个独立的拦截器每个步骤由一个拦截器处理。内置拦截器顺序如下RetryAndFollowUpInterceptor重试与重定向拦截器。负责请求失败的重试逻辑如网络异常、连接失败处理重定向BridgeInterceptor桥接拦截器。负责将请求转换为网络请求会自动添加必要的请求头如Content-Length/Content-Type/User-Agent/Accept-Encoding 自动处理 GZip 解压。CacheInterceptor缓存拦截器。负责处理缓存从请求判断是否从缓存中获取响应或收到网络响应将其写入缓存。ConnectInterceptor连接拦截器。负责建立真正的 TCP 连接。管理连接池连接复用处理 TLS 握手networkInterceptors网络拦截器用户可以添加的拦截器在连接建立之后实际发送请求之前CallServerInterceptor网络调用拦截器。负责向服务器发送请求数据并从服务器获取响应数据。连接池ConnectionPool用于管理和复用 Connection 对象避免频繁创建和关闭 TCP 连接。最大空闲连接数是 5 个。没有明确的全局最大连接数限制受Dispatcher的maxRequests默认64限制异步任务调度器使用异步请求时RealCall 会讲一个 AsyncCall 提交给 Dispatcher。Dispatcher 内部维护了一个线程池ExecutorService。全局最大请求数是 64单个域名下的最大并发请求数是 5。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2492494.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!