美文网首页
Retrofit2.0二次封装

Retrofit2.0二次封装

作者: 等风来_Android | 来源:发表于2018-05-03 19:41 被阅读0次


    Retrofit2.0本身就是基于OKHttp封装的网络请求框架,使用起来也很方便,但是只有自己动手进一步封装好这个框架,使用起来才能够更加的得心应手,本人也是参考大佬(某网,傅大佬)的资料学习,最后才能对Retrofit2.0做一个简单的封装,仅此记录,方便日后复用,不足之处望大佬们多多指点!


       步骤一:定义Retrofit具体请求方法

    先创建一个Retrofit请求的基本接口,里面主要定义了请求的一些基本方法,如下所示:


    步骤二:使用静态内部类创建单例模式,获取第一步创建的RestService实例

    关于静态内部类创建单例可参考此文章:java单例模式比较与优化

    前两步相对简单,就是同过一个api接口定义基本的请求方法,其次获取service实例,这也是Retrofit2.0基本用法的前两步


    步骤三:利用建造者模式创建RestClientBuilder,方便我们在业务代码中链式调用网络请求

    Android 原生AlertDialog 就是建造者模式

    建造者模式请参考:Android建造者模式

    代码较多,仅贴出一部分,写法类似


    步骤四:创建RestClient类,用来构建(bulider)RestClientBuilder对象,同时进行具体的网络操作

    这个类就涉及到网络请求的核心业务逻辑了

    首先通过builder方法创建RestClientBuilder实例,RestClientBuilder进行一系列链式调用完毕后,在调用build方法创建RestClient

    实例,通过构造方法将链式调用的参数传递给RestClient,然后在RestClient里面进行具体的网络操作请求

    step_1:构造方法,接收RestClientBuilder的bulid方法传递过来的参数

    step_2:bulider方法,用来构建 RestClientBuilder对象


    step_3:request方法,通过RestCreator获取RestService对象(参考第二步),再调用RestService里面的具体的请求方法



    步骤五:关于步骤四最后的getRequestCallBack()做简要说明

    service调用具体的网络操作之后,会返回一个call对象,(Call#execute 方法同步; Call#enqueue 方法异步)

    然后调用call.enqueue (Callback callback);至此,Retrofit一次完整的网络请求流程才算结束;而这个callback

    就是网络请求的回调(成功或者失败),最后一步就是关于这个回调的封装,具体看代码:


    步骤六:使用我们封装好的网络请求框架来请求数据

    直接上代码了:

    行云流水一条线有木有,哈哈,本次封装只测试了get方法,后续其他方法都会加上,访问的是百度的链接,

    还有很多不足指之处,望大佬们多多指点!

    代码已上传gitHub:Retrofit2.0二次封装

    相关文章

      网友评论

          本文标题:Retrofit2.0二次封装

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