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对象;
  • 相关阅读:
    Windows Phone 应用程序的全球化 狼人:
    幽默:编程语言 / 操作系统
    幽默:编程语言 / 操作系统
    程序员的幽默
    游戏杆编程心得二:如何判断按钮的有效按下
    DirectX 7.0 SDK在VC 6.0环境中使用的注意事项
    游戏杆编程心得
    HTML 5 WebSocket 示例
    HTML 5 WebSocket 示例
    慎用VC 6.0
  • 原文地址:https://www.cnblogs.com/webor2006/p/8997381.html
Copyright © 2011-2022 走看看