zoukankan      html  css  js  c++  java
  • 开源框架相关面试问题-okhttp网络框架面试问题详解

    OkHttp使用简介:

    ①、准备OkHttpClient对象:

    一般app中使用网络可以全部用它,可以将它弄为全局变量,这样就可以共用它的缓存和线程池了。

    ②、准备Request对象:

    很显然它是采用Builder模式来构造成,它封装了请求地址、请求方法、请求头、请求体和标志位信息:

    ③、发起请求:分为同步请求和异步请求:
    同步请求:会阻塞UI线程。

    异步请求:也就是不会阻塞UI线程,在子线程中执行的。

     总结:

    • 创建一个OkHttpClient对象。
    • 创建一个Request对象,通过内部类Builder调用生成Request对象。
    • 创建一个Call对象,调用execute【同步请求】 / enqueue【异步请求】。

    OkHttp源码剖析:

    在分析源码之前先来看一张图:

    程序会发一个Request请求给OkHttp的核心层进行处理,而在Okhttp中有一个最重要的概念:拦截器,它会将请求拦截之后再分发response给应用层,大体是这么一个过程。下面先来分析一下同步请求:

    由于前两步比较简单,直接分析第三步:

    先看一下newCall方法是做了啥事:

    实际上是生成了一个RealCall对象,所以最终execute()方法的执行就是在RealCall里面,定位到它:

    下面分析一下它的实现:

    下面具体来看一下:

    这里以CallServerInterceptor拦截器为例进行分析:

    所以说它的底层其实也就是用基础的东东来进行封装滴。

    接下来再来看一下它的异步请求:

    所以进去看一下:

    这个类中有三个重要的集合:



    下面用图来表示一下其整个过程:

  • 相关阅读:
    lr http_get访问webservice
    lr http_post请求webservice
    快速幂(fast power)
    运算符重载
    1010 Radix 二分
    1054 The Dominant Color
    1042 Shuffling Machine
    1059 Prime Factors
    1061 Dating
    1078 Hashing
  • 原文地址:https://www.cnblogs.com/webor2006/p/8996541.html
Copyright © 2011-2022 走看看