OkHttp3源码详解(二) 整体流程,BAT大厂面试总结

  1. }

  2. client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket));

  3. }

同样先置标志位,然后将封装的一个执行体放到异步执行队列中。这里面引入了一个新的类AsyncCall,这个类继承于NamedRunnable,实现了Runnable接口。NamedRunnable可以给当前的线程设置名字,并且用模板方法将线程的执行体放到了execute方法中

2.总体架构

上图是OkHttp的总体架构,大致可以分为以下几层:

  • Interface——接口层:接受网络访问请求

  • Protocol——协议层:处理协议逻辑

  • Connection——连接层:管理网络连接,发送新的请求,接收服务器访问

  • Cache——缓存层:管理本地缓存

  • I/O——I/O层:实际数据读写实现

  • Inteceptor——拦截器层:拦截网络访问,插入拦截逻辑

①Interface——接口层:

接口层接收用户的网络访问请求&#x

  • 23
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
OkHttp是一个开源的HTTP客户端库,用于在Android和Java应用程序中进行网络请求。它提供了简单且强大的API,使得发送和接收HTTP请求变得更加容易。在使用OkHttp时,首先需要创建一个OkHttpClient实例,该实例用于配置和执行HTTP请求。然后,可以使用OkHttpClient创建一个Request对象,该对象包含了请求的URL、请求头和请求体等信息。接下来,可以使用OkHttpClient的newCall方法创建一个Call对象,该对象表示一个异步的HTTP请求任务。可以通过调用Call对象的enqueue方法来执行异步请求,并传入一个Callback对象来处理请求的响应结果。在Callback对象的onResponse方法中,可以获取到请求的响应数据,而在onFailure方法中,可以处理请求失败的情况。[1] OkHttp和Retrofit是相辅相成的,Retrofit是对OkHttp的上层封装,它提供了更加简洁和高级的API来进行网络请求。在使用OkHttp时,可以通过创建一个OkHttpClient实例来配置网络请求的一些参数,例如连接超时时间、读取超时时间等。然后,可以使用OkHttpClient创建一个Request对象,该对象包含了请求的URL、请求头和请求体等信息。接下来,可以使用OkHttpClient的newCall方法创建一个Call对象,该对象表示一个异步的HTTP请求任务。可以通过调用Call对象的enqueue方法来执行异步请求,并传入一个Callback对象来处理请求的响应结果。[2] 在OkHttp中,execute方法表示同步请求,即在当前线程中执行网络请求,而enqueue方法表示异步请求,即使用OkHttp内置的线程池来执行网络请求。这涉及到OkHttp的任务分发器,它负责将请求任务分发给线程池中的线程来执行。通过使用异步请求,可以避免在主线程中进行网络请求,从而提高应用的响应速度和用户体验。[3]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值