一、 这是执行过程中主要的类,之间存在调用关系。把这个几个类的源码搞清楚了就差不多了。后面会在其他文章中根据这些类作相应的分析。
1、OkHttpClient
1、Internal
2、Builder
1、Dispatcher
2、EventListener
3、ConnectionPool
1、RouteDatabase
3、Util
4、PlatForm
1、BasicTrustRootIndex
5、CertificateChainCleaner
6、CertificatePinner
7、Request
1、Headers
1、Builder
2、HttpUrl
8、RealCall
1、RetryAndFollowUpInterceptor
1、StreamAllocation
1、RouteSelector
2、Address
3、Response
2、EventListener
3、BridgeInterceptor
4、CacheInterceptor
5、ConnectInterceptor
6、CallServerInterceptor
7、RealInterceptorChain
二、使用方式
1、构造OkHttpClient
OkHttpClient client = new OkHttpClient();
2、构造Request
Request request = new Request.Builder()
.url(url)
.build();
3、同步请求
Response response = client.newCall(request).execute()
4、异步请求
client.newCall(request).enqueue(callback);
三、 通过一张总的流程图就可以对流程有清晰的认识
- OkHttpClient 通过 newCall() 为Request 创建 Call
- RealCall 是 Call 的具体实现,分别进行同步或者异步的处理,同步的话直接执行,异步的话通过Dispacher 进行处理。
- 最终通过getResponseWithInterceptorChain() 调用 RealInterceptorChain 中的process() 返回 Response
总结
- 所有涉及的关键类
- 使用方式
- 通过流程图了解实现过程
如果对你有一点点帮助,那是值得高兴的事。:)
我的csdn:http://blog.csdn.net/shenshizhong
我的简书://www.greatytc.com/u/345daf0211ad