上一章我们讲到了责任链模式,也就是
OkHttp
的核心思想,本章将继续讲OkHttp
是收到返回值之后的处理。
@Override protected void execute() {
boolean signalledCallback = false;
try {
Response response = getResponseWithInterceptorChain();//1
if (retryAndFollowUpInterceptor.isCanceled()) {//2
signalledCallback = true;
responseCallback.onFailure(RealCall.this, new IOException("Canceled"));
} else {
signalledCallback = true;
responseCallback.onResponse(RealCall.this, response);
}
} catch (IOException e) {
if (signalledCallback) {
// Do not signal the callback twice!
Platform.get().log(INFO, "Callback failure for " + toLoggableString(), e);
} else {
responseCallback.onFailure(RealCall.this, e);
}
} finally {
client.dispatcher().finished(this);
}
}
可以看到,我们拿到返回值之后,就会判断是否取消了请求,然后通过responseCallback
方法调用接口onFailure
或者onResponse
方法返回出去,这样整个OkHttp
的大体流程就结束了。
上面我们只是大概说明了下
OkHttp
的源码,其实好多地方都没说到,比如说最重要是的各种拦截器对Request
和Response
的处理?OkHttp
的请求和结果是如何被服务器接收的,服务器又是如何将结果返回给客户端处理的?OkHttp
最终处理数据的地方在哪个拦截器,怎么处理的?等等问题,需要我们深入了解下。
网友评论