美文网首页
Retrofit源码分析总结

Retrofit源码分析总结

作者: QM | 来源:发表于2021-06-28 15:49 被阅读0次

Retrofit怎么进行网络请求

Retrofit主要是在create方法中采用动态代理模式实现接口方法,这个过程构建了一个ServiceMethod对象,根据方法注解获取请求方式,参数类型和参数注解拼接请求的链接,当一切都准备好之后会把数据添加到Retrofit的RequestBuilder中。然后当我们主动发起网络请求的时候会调用okhttp发起网络请求,okhttp的配置包括请求方式,URL等在Retrofit的RequestBuilder的build()方法中实现,并发起真正的网络请求。

Retrofit使用方法


Retrofit retrofit = new Retrofit.Builder()
                .baseUrl(hostUrl)
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(OkHttpClient())
                .build();

ApiService apiService = retrofit.create(ApiService.class)
Call<ResponseBody> call = ApiService .getInfo("codeqm");

//同步请求方式
 call.request();
 //异步请求方式
 call.enqueue(new Callback<ResponseBody>() {
            @Override
            public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                //请求成功回调
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                //请求与失败回调
            }
        });

Retrofit

Retrofit的具体实现原理梳理总结:

  • 使用构建模式创建Retrofit实例对象
  • 使用动态代理模式,通过Retrofit实例对象的create方法动态创建网络请求接口的代理类
  • 使用代理类调用方法发起网络请求时,会通过CallAdapterFactory创建的CallAdapter对象的adapt方法调用OkHttpCall的enqueue方法发起网络请求
  • OkHttpCall的enqueue方法先根据注解、请求参数等信息构建出OkHttpClient的网络请求Call对象,接着使用Call对象发起网络请求
  • 网络请求回来时,使用ServiceMethod的toResponse方法中调用响应内容适配器的具体实现类的convert发放进行解析
  • Retrofit只是对网络请求进行封装的一个框架,它本身并不发起网络请求,为的是方便我们使用、优化我们网络请求的代码、对网络请求进行扩展(可以自定义请求适配器、响应内容解析器等)。

使用Retrofit需要注意一下细节:

  • 必须要要配置baseUrl
  • 定义网络请求必须是接口不能是类,且不能继承其他的接口
  • 定义网络请求接口时,必须要遵循Retrofit的语义规则,比如:@GET对应@Query;@FormUrlEncoded对应@Field;@Multipart对应@Part等
  • 如果配套使用Rxjava,则必须遵循RxJava语义
  • 对应OkHttp头部的key不能null也不能为空字符串;value不能为null

参考链接:
https://zhuanlan.zhihu.com/p/35121326
https://www.jianshu.com/p/8512454df047
https://www.jianshu.com/p/f57b7cdb1c99

相关文章

  • retrofit2.0源码分析

    Android 手把手教你使用Retrofit2 Retrofit2源码分析 总结 这里总结下Retrofit2的...

  • retrofit 源码分析

    retrofit 源码分析 retrofit 源码分析源码执行流程new Retrofit.Builder().b...

  • Retrofit源码分析

    Retrofit 源码分析 Retrofit地址 Retrofit分析-经典设计模式案例 RxAndroid Gi...

  • okhttp3 源码分析

    在上一篇 Retrofit 学习第三弹—源码分析篇 分析了 Retrofit 的源码,分析到请求 Call 位置,...

  • Retrofit源码分析总结

    1.简介 Retrofit是一个封装了Okhttp网络请求库的优秀框架,其可以轻松提供Restful风格的接口。R...

  • Retrofit源码分析总结

    Retrofit怎么进行网络请求 Retrofit主要是在create方法中采用动态代理模式实现接口方法,这个过程...

  • Retrofit源码解析

    0.前言 终于到了源码分析系列的Retrofit篇了。有关retrofit源码分析的文章网上有很多,但是都是属于旧...

  • 安卓 常用源码分析 导航

    Retrofit官方:https://square.github.io/retrofit/推选源码分析:[动态代理...

  • Retrofit2源码分析

    Retrofit源码分析基于2.4.0。 关于Retrofit的基本使用可以参照 Retrofit官网。 Retr...

  • Retrofit源码分析一 概览

    Retrofit源码分析一 概览 Retrofit的本质和与Okhttp的关系​ 说到Retrofit,免不...

网友评论

      本文标题:Retrofit源码分析总结

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