美文网首页
OKHttp源码分析(五)

OKHttp源码分析(五)

作者: MIRROR1217 | 来源:发表于2019-07-22 20:05 被阅读0次

上一章我们讲到了责任链模式,也就是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的源码,其实好多地方都没说到,比如说最重要是的各种拦截器对RequestResponse的处理?OkHttp的请求和结果是如何被服务器接收的,服务器又是如何将结果返回给客户端处理的?OkHttp最终处理数据的地方在哪个拦截器,怎么处理的?等等问题,需要我们深入了解下。

相关文章

网友评论

      本文标题:OKHttp源码分析(五)

      本文链接:https://www.haomeiwen.com/subject/dekglctx.html