网络请求组件的封装思路

来源:互联网 发布:mac怎么软件下载 编辑:程序博客网 时间:2024/06/04 17:48

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

网络框架在好用也是别人封装的。作为一个合格的开发人员我们在使用别分框架的同时也知道其内部的原理,这样才能拿在发生突发情况的时候不至于手忙脚乱,快速的找到发生问题的地方。其实我们使用开源社区的任何开源框架都要有这种分析其实现原理的精神,扯远啦,今天来了解一下一个网络框架的一般封装思路(okhttp为例)。

一个网络框架最主要的分为3个部分 :
创建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是请求失败的回调根据不同的返回找出请求失败的原因。

0 0
原创粉丝点击