该网络请求框架是基于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线程中将数据保存在数据库,氛围新增和更新。更新完毕后,从数据库读取最新消息,通过切换线程将请求结果发送到主线程。