zoukankan      html  css  js  c++  java
  • 开源框架相关面试问题-retrofit网络框架面试问题讲解

    retrofit使用简介:

    • 在retrofit中通过一个接口作为Http请求的api接口。

      注意:@GET("url")中的url只是一个路径,不包含主机号的。
    • 创建一个retrofit实例。 
    • 调用api接口。

    retrofit源码剖析:

    首先通过Builder模式来创建Retrofit对象,如下:

    接着就是将咱们定义的接口转换成实例进行请求,究境它是怎么转换的呢,点击进去查看一下create()方法:

    其中会回调invoke()方法,接着最核心的三行代码就出现了:

    查看一下loadServiceMethod的具体实现:


    再回到主流程来:

    这个分析流程跟createCallAdapter()方法类似,就不分析了,回到解析我们api的方法上来:

    而看一下adapt()的具体实现:

    呃,空的,那肯定在它的子类,其实是在ExecutorCallAdapterFactory类中,然后它里面有个同步也有个异步请求,咱们看下异步请求的细节:

    所以最终还是会调用到OkhttpCall的enqueue()方法:

    所以~~其实都可以看到retrofit底层实现就是靠okhttp来实现的。

    最后对动态代理这块进行总结一下:

    • 首先,通过Method把它转换成ServiceMethod;
    • 然后,通过serviceMethod,args获取到okHttpCall对象;
    • 最后,再把okHttpCall进一步封装并返回Call对象;
  • 相关阅读:
    leetcode刷题笔记十四 最长公共前缀 Scala版本
    leetcode刷题笔记十三 罗马数字转数字 Scala版本
    leetcode刷题笔记十二 整数转罗马数字 Scala版本
    Maven 安装与配置
    Maven基础
    java 打jar包配置文件和jar包通级
    java 类
    java 数组
    java 重载
    java 普通项目的配置文件
  • 原文地址:https://www.cnblogs.com/webor2006/p/8997381.html
Copyright © 2011-2022 走看看