Retrofit源码学习五:Retrofit中同步、异步请求解析

本文详细介绍了Retrofit同步请求的执行流程,包括ParameterHandler解析参数、ServiceMethod创建Request、OkHttp发送请求及数据解析。同步请求通过Call.execute()执行,解析响应数据时使用了GsonConverter。异步请求流程类似,主要区别在于使用Executor执行回调。
摘要由CSDN通过智能技术生成

目录

系列文章:

同步请求:OkHttpCall.execute()

总结:

异步请求:OkHttpCall.enqueue()


系列文章:

Retrofit源码学习一:Retrofit介绍

Retrofit源码学习二:代理模式

Retrofit源码学习三:Retrofit源码详解一

Retrofit源码学习四:Retrofit源码详解二

Retrofit源码学习五:Retrofit中同步、异步请求解析

Retrofit源码学习六:框架中的设计模式

Retrofit同步请求和异步请求的区别:其实,这两个方法大体相同。唯一的不同在,异步请求会将回调方法交给回调执行器Executor,然后由Executor指定不同的线程去完成不同的操作。

我们先来总结一下同步方法的步骤:

同步请求:OkHttpCall.execute()

一、用ParameterHandler对网络请求接口中的方法、参数进行解析

二、用ServiceMethod创建一个Okhttp的Request对象

三、通过okhttp发送网络请求

四、用数据解析器converter解析服务器返回的数据(Retrofit中默认用的是GsonConverterFactory)

如下图所示:

 

 我们看具体的代码:

//class  OkHttpCall开始
final class OkHttpCall<T> implements Call<T> {

    private okhttp3.Call rawCall;

    @Override 
    public Response<T> execute() throws IOException {
        okhttp3.Call call;

        synchronized (this) {
          if (executed) throw new IllegalStateException("Already executed.");
          executed = true;

       if (creationFailure != null) {
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值