网络请求组件的封装思路

OKHttp官网有简单的使用方法 Android中OkHttp基础用法。里面是okhttp官方给出的最基本的用法。但是我们正常的开发中肯定不能直接按照官方代码来直接写我们的网络请求。因为一个APP肯定会有很多的网络请求你逻辑,直接使用官方的示例可以完成我们的业务,但是会造成非常多的冗余代码。不利于我们的调试和代码的维护。所以我们的日常开发中都是对网络请求部分封装成易用好维护的框架之后在用。开源社区也有很多的封装好的网络框架比如 retrofit okhttp-OkGo,
Fast-Android-Networking,okhttputils,NoHttp。以上都是开源社区封装的比较好的网络框架。还有一些比较老的Volley ,android-async-http ,xUtil…

网络框架在好用也是别人封装的。作为一个合格的开发人员我们在使用别分框架的同时也知道其内部的原理,这样才能拿在发生突发情况的时候不至于手忙脚乱,快速的找到发生问题的地方。

创建request对象发送request对象处理response返回的数据

第一:请求头部分request 包括:

  • (1)请求的url
  • (2)请求的参数(请求头,请求体)
  • (3)创建好请求的 request对象
    request部分的任务主要是生成一个OKHttp所需要的一个request对象包括get请求对象,post请求对象,文件上传下载的请求对象等等。

第二:请求的核心部分(OKHttp或者urlconnection)

  • (1)发送get/post请求
  • (2)请求相关的参数配置 (超时,缓存等)
  • (3)https的支持
    此部分的任务是创建出okhttpClient对象并通过OKHttp的Call方法将第一部分的请求发送出去

第三:请求回调response(callback)

  • (1)处理回调函数
  • (2)处理返回的异常
  • (3)发送消息到主线程
  • (4)可以直接把json转成对象实体返回。
    此部分的任务是处理Call返回的回调函数,onResponse和onFailure, onResponse是请求成功的回调,请求成功也不一定有数据,我们需要根据responseCode对数据进行处理。onFailure是请求失败的回调根据不同的返回找出请求失败的原因。

第四:返回数据解析

如何将返回的json数据直接解析成我们需要的对象然后在callback中返回呢。可以在传callback的时候,给callback加上一个泛型,通过反射拿到泛型的参数,就能知道参数类型了,之后就可以通过gson或者fastJson等解析并返回了
找到callback上泛型的类型方式

   private Class<?> analysisClassInfo(Object obj){
        // 可以得到包含原始类型,参数化类型,类型变量,基本类型
        Type genType = obj.getClass().getGenericSuperclass();
        Type[] actualTypeArguments =((ParameterizedType)genType).getActualTypeArguments();
        return (Class<?>)actualTypeArguments[0];
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值