自定义网络请求框架

该博客介绍了基于okhttp封装的网络请求框架。okhttp支持设置缓存、超时、cookie、拦截器等,还能监听网速判断网络状况。框架提供门面类,通过单例模式进行网络请求,实现REST API。请求前会从数据库加载缓存,请求后将数据存于数据库,并把结果发至主线程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该网络请求框架是基于okhttp封装的项目。支持设置请求配置。

  • okhttp的Cache类支持配置缓存的大小于位置。
  • okhttp支持设置链接超时,读取超时,写入超时。
  • okhttp支持设置cookie。
  • okhttp支持设置请求拦截器,我们通过自定义重试拦截器设置请求失败重试。根据请求返回的响应体的状态和重试次数,决定是否重试。
  • okhttp支持设置请求拦截器,我们通过自定义日志拦截器实现请求日志的打印。包括请求方法,请求地址,请求协议,请求体长度,请求头信息,请求体信息。响应码,响应信息,响应地址,响应时间,响应头,响应体信息。
  • 将网速变化情况根据每秒传输的字节数进行监听,从而判断网络状况。通过系统提供的TrafficStats类进行判断,它能够获取手机开机之后接手的网络字节数。在请求前和请求后进行相减即可得到此次的请求字节。进而判断网络好坏。如果不支持,则获取本地请求的响应体的字节数。
  • okhttp支持网络拦截器。
  • okhttp支持CallAdapter。添加调用适配器工厂以支持除Call之外的服务方法返回类型。
  • okhttp支持Converter。添加转换器工厂以进行对象的序列化和反序列化。
  • okhttp支持Call。指定用于创建Call实例的自定义call工厂。

提供一个门面类让客户端进行设置。

  • 通过传入不同的服务器地址,返回不同的Retrofit实例。
  • 提供了REST API,包含上传和下载文件的接口给客户端。并提供回调。

门面类持有真正进行网络请求的管理类。

  • 通过单例模式进行网络请求。管理类内部通过Retrofit使用自定义的okhttp进行网络请求。Retrofit的服务接口里面实现了REST API和上传,下载的接口定义。需要传入服务器地址和对应参数。
  • 所有的请求对象都是异步调用,并在请求的开始,获得响应,结束的地方设置传入的自定义回调函数。
  • 在请求之前会从数据库加载已有的缓存信息,并判断需要从服务器请求吗,可以设置每次都从服务器拉去信息。有些缓存信息中包含了信息的有效缓存时间,要是超出缓存期限会促发网络请求。网络请求回来后会会在开辟的IO线程中将数据保存在数据库,氛围新增和更新。更新完毕后,从数据库读取最新消息,通过切换线程将请求结果发送到主线程。

转载于:https://juejin.im/post/5ccffe30e51d453aa10dff3a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值