为什么要使用Retrofit,Retrofit与OkHttp

首先,我们来看一下OkHttp的请求流程

  • 第一步,构建OkHttp客户端
  • 第二步,写request请求地址,其中不止包括url,还要包括请求头,请求参数等等
  • 第三步,call,网络请求方式是Okhttp,请求的地址是request,加在一起就是call
  • 第四步,把call(请求任务)放到请求队列中进行网络请求
  • 第五步,请求成功后返回一个response

OkHttpClient client = new OkHttpClient.Builder()
        .readrimeout( tineuut: 5, TimeUnit. SECONDS).build();
Request request =new Request.Builder()
    .url("http://www.baidu.com").get().build();
okhttp3.Call call = client.newCall(request);
call.enqueue(new okhttp3.Callback(){
    @override
    public void onFailure(okhttp3.Call call, IOException e) {e.printStackTrace();
    @override
    public void onResponse(okhttp3.Call call, okhttp3.Response response) throws IOException{ 
        if (response.isSuccessful()) {
            System.out.printIn(" success cli");
        }
    }
});

在这个过程中,就会出现一系列的问题,如:

  • 不同的请求对应的请求地址不同,即request不同,而且配置请求body,请求头,请求参数也很繁琐,每次请求的时候都需要重新一段request代码
  • OkHttp只是负责网络请求,返回一个Response,不负责数据的解析,所以用户拿到返回数据后,对responsebody需要自己手动解析,无法进行复用
  •  如果用户需要通过上一步的请求结果来进行下一步的请求,会出现回调陷阱

总结一下,OkHttp使用过程中有如下缺陷:

  • 用户网络请求的接口配置繁琐
  • 数据解析过程需要用户手动拿到responsbody进行解析,不能复用
  • 无法适配自动进行线程的切换
  • 万一我们的存在嵌套网络请求就会陷入"回调陷阱" 

所以需要在okhttp的基础上进行二次封装,由此便引入了Retrofit

Retrofit在OkHttp的基础新增以下功能:

  • 利用注解配置网络请求
  • 使用Adapter适配不同的call,解决回调陷阱问题,因为Retrofit支持RxJava
  • 利用Converter自动完成数据解析
  • 利用Executor自动完成线程切换

        

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值