okhttp3.11.0 源码分析-整体流程

一、 这是执行过程中主要的类,之间存在调用关系。把这个几个类的源码搞清楚了就差不多了。后面会在其他文章中根据这些类作相应的分析。

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);

三、 通过一张总的流程图就可以对流程有清晰的认识

《okhttp3.11.0 源码分析-整体流程》 okhttp3.0流程图.png

  • OkHttpClient 通过 newCall() 为Request 创建 Call
  • RealCall 是 Call 的具体实现,分别进行同步或者异步的处理,同步的话直接执行,异步的话通过Dispacher 进行处理。
  • 最终通过getResponseWithInterceptorChain() 调用 RealInterceptorChain 中的process() 返回 Response

总结

  • 所有涉及的关键类
  • 使用方式
  • 通过流程图了解实现过程

如果对你有一点点帮助,那是值得高兴的事。:)

我的csdn:http://blog.csdn.net/shenshizhong
我的简书:http://www.jianshu.com/u/345daf0211ad

    原文作者:shenshizhong
    原文地址: https://www.jianshu.com/p/5a12753a6c14
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞