首页 > 代码库 > okHttp源码解析------待续
okHttp源码解析------待续
看该篇文章前首先要熟悉okHttp的使用,建议先读OkHttp的简单使用
本文的源码解析参考链接:okhttp3总和解析
1.从URL请求处理开始分析
由异步将请求加入调度方法开始引入正题:
getClient().newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { } });
/** * Prepares the {@code request} to be executed at some point in the future. */ @Override public Call newCall(Request request) { return new RealCall(this, request); }
@Override public void enqueue(Callback responseCallback) { enqueue(responseCallback, false); } void enqueue(Callback responseCallback, boolean forWebSocket) { synchronized (this) { if (executed) throw new IllegalStateException("Already Executed"); executed = true; } client.dispatcher().enqueue(new AsyncCall(responseCallback, forWebSocket)); }
由源码上的调用顺序,我们将步骤转化为以下的几个技术点:
由以上的使用okhttp请求的调用代码,可以看到最终的请求时通过dispatcher来完成的。
2.Dispatcher调度者
Dispatcher进行线程分发,有两个方法,一个是普通的单线程,也就是线程阻塞的方式请求;另一种就是通过队列进行并发任务的分发和回调,下面主要分析第二种:
3.Interceptor拦截器
4.缓存策略
4.Socket管理(StreamAllocation)
5.HTTP请求序列化/反序列化
6计算机常识
okHttp源码解析------待续
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。