RealCall类 —–前面我们讲的是HTTP相关的概念在OKhttp3中是如何通过类实现的 。 Okhttp的请求过程是先组装请求报文,然后将请求报文封装成一个任务,最后交由“网络”去执行这个任务。 而RealCall就是这个任务。
我们看一下源码。
1、RealCall属性
//重连接拦接器 ------ 拦截器我们会在后面的章节讲解
final RetryAndFollowUpInterceptor retryAndFollowUpInterceptor;
//客户端
final OkHttpClient client;
//请求报文
final Request originalRequest;
//任务是否被执行
private boolean executed;
属性还是挺少的,虽然少,但是每个属性都至关重要。
2、构造方法
RealCall(OkHttpClient client, Request originalRequest, boolean forWebSocket) {
this.client = client;
this.originalRequest = originalRequest;
this.forWebSocket = forWebSocket;
this.retryAndFollowUpInterceptor = new RetryAndFollowUpInterceptor(client, forWebSocket);
}
构造函数主要完成属性的初始化。
3、一般方法
//获得请求报文
@Override public Request request() {
return originalRequest;
}
//获得连接流 ------ 一个连接上可以对应多个流
StreamAlloc