Okhttp源码分析

一个简单的请求过程:
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder().url(“https://www.baidu.com/“).build();
Response response = client.newCall(request).execute();
if (response.isSuccessful()) {
OwnLog.i(response.body().string());
}

会执行RealCall里面的execute,然后执行getResponseWithInterceptorChain方法->ApplicationInterceptorChain中的proceed方法。
getResponse->engine = new HttpEngine->engine.sendRequest()->engine.readResponse();在这个过程中返回数据。

说明:Okhttp底层是通过Socket来实现连接的。代码分辨在Http1xStream、Http2xStream、HttpEngine里面。这下面3个类以及相关类,是核心的请求网络数据的代码

ConnectionPool连接池的分析:http://www.jianshu.com/p/92a61357164b
CacheStrategy缓存策略:http://www.jianshu.com/p/9cebbbd0eeab

优点
1.支持http、https请求
2.复用连接池,减少连接次数(https使用不?) //TODO
3.GZIP压缩 //具体的代码 //TODO
4.缓存策略避免重复请求
5.支持多个ip地址请求

Address
http请求的地址信息,包含一些SSl、证书等。

Authenticator
验证,认证。

Cache
缓存,采用DiskLruCache的方式进行缓存。

CacheControl
缓存策略

CacheStrategy
缓存策略

Call
请求封装接口类

Callback
请求失败、成功的回调

CertificatePinner
证书鉴定?

Challenge
RE:RFC 2617 challenge

CipherSuite
加密套接字

Connection
连接http、https的接口封装类

ConnectionPool
管理服用http连接

ConnectionSpec连接配置

ConnectionSpecSelector
连接配置策略

Cookie

CookieJar
策略

Credentials
资格证书

DiskLruCache
缓存管理

Dispatcher
异步执行策略

DistinguishedNameParser
名称解析。。

Dns
解析域名,有的应用会用自己的解析DNS

ErrorCode
错误码

FileSystem
文件系统

FormBody
请求body

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值