Android面试题:okhttp

相关视频:

okhttp框架解析与应用

Android网络框架-OkHttp使用

问题一:简述一下OkHttp的优势

OkHttp是一个非常优秀的网络请求框架,已被谷歌加入到Android的源码中。目前比较流行的Retrofit也是默认使用OkHttp的。

  • 易使用、易扩展。
  • 支持 HTTP/2 协议,允许对同一主机的所有请求共用同一个 socket 连接。
  • 如果 HTTP/2 不可用, 使用连接池复用减少请求延迟。
  • 支持 GZIP,减小了下载大小。
  • 支持缓存处理,可以避免重复请求。
  • 如果你的服务有多个 IP 地址,当第一次连接失败,OkHttp 会尝试备用地址。
  • OkHttp 还处理了代理服务器问题和SSL握手失败问题。

问题二:讲一下okhttp的主要工作流程

OkHttp的主要工作流程

第一步,创建Request和OkHttpClicent对象,然后将Request封装成Call对象,然后调用enqueue()方法执行异步请求;

第二步,Dispatcher的enqueue(AsyncCall)和promoteAndExecute()方法,enqueue(AsyncCall)有两个作用:一是添加AsyncCall到预执行队列readyAsyncCalls,二是设置同一Host的连接计数器;promoteAndExecute()负责真正对AsyncCall进行资源的调度:对readyAsyncCalls进行迭代循环,如果正在执行的队列size不超过64且同一Host的连接计数器的值不超过5,就将这个请求放入到runningAsyncCalls。然后遍历runningAsyncCalls,挨个执行里面的请求;

第三步,AsyncCall对象把自己作为任务交到线程池执行,提交成功后就finish掉;

问题三:OkHttp的Dispatcher类

OkHttp 3.14.10源码分析(3)- Dispatcher - 线程资源管理和分配

问题四:OkHttp的Interceptor类

官网:拦截器是Okhttp中提供的一种强大机制,它可以实现网络监听、请求、以及响应重写、请求失败重试等功能。

RetryAndFollowUpInterceptor:重试和失败重定向拦截器 

BridgeInterceptor:桥接拦截器,处理一些必须的请求头信息的拦截器 

CacheInterceptor:缓存拦截器,用于处理缓存 

ConnectInterceptor:连接拦截器,建立可用的连接,是CallServerInterceptor的基本 

CallServerInterceptor:请求服务器拦截器将 http 请求写进 IO 流当中,并且从 IO 流中读取响应 Response


    

 

  • 3
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值