NoHttp介绍
作者对该框架这样介绍
Android Http标准框架,底层OkHttp,与RxJava完美结合,比Retrofit更简单易用。
框架特性
- 动态配置底层框架为OkHttp、HttpURLConnection
- 与RxJava完美结合,支持异步请求、支持同步请求
- 多文件上传,支持大文件上传,表单提交数据
- 文件下载、上传下载、上传和下载的进度回调、错误回调
- 支持Json、xml、Map、List的提交
- 完美的Http缓存模式,可指定缓存到数据库、SD卡,缓存数据已安全加密
- 自定义Request,直接请求JsonObject、JavaBean等
- Cookie的自动维持,App重启、关开机后还持续维持
- http 301 302 303 304 307、重定向,支持多层嵌套重定向
- Https、自签名网站Https的访问、支持双向验证
- 失败重试机制,支持请求优先级
- GET、POST、PUT、PATCH、HEAD、DELETE、OPTIONS、TRACE等请求协议
- 用队列保存请求,平均分配多线程资源,支持多个请求并发
- 支持取消某个请求,取消指定多个请求,取消所有请求
使用方法
1. 添加依赖
如果使用HttpURLConnection作为网络层:
compile
'com.yolanda.nohttp:nohttp:1.1.0'
如果要使用OkHttp作为网络层,请再依赖:
compile
'com.yanzhenjie.nohttp:okhttp:1.1.0'
2. 初始化
NoHttp初始化需要一个Context,最好在Application的onCreate()中初始化,记得在manifest.xml中注册Application。
简单初始化
1NoHttp.initialize(this);高级自定义初始化
超时配置,默认10s
123456NoHttp.initialize(this, new NoHttp.Config()// 设置全局连接超时时间,单位毫秒.setConnectTimeout(30 * 1000)// 设置全局服务器响应超时时间,单位毫秒.setReadTimeout(30 * 1000));默认缓存,默认保存在数据库
1234567891011NoHttp.initialize(this, new NoHttp.Config()...// 保存到数据库.setCacheStore(new DBCacheStore(this).setEnable(true) // 如果不使用缓存,设置false禁用。)// 或者保存到SD卡.setCacheStore(new DiskCacheStore(this)));默认Cookie保存的位置,默认保存在数据库
1234567NoHttp.initialize(this, new NoHttp.Config()...// 默认保存数据库DBCookieStore,开发者可以自己实现。.setCookieStore(new DBCookieStore(this).setEnable(false) // 如果不维护cookie,设置false禁用。));配置网络层
1234567NoHttp.initialize(this, new NoHttp.Config()...// 使用HttpURLConnection.setNetworkExecutor(new URLConnectionNetworkExecutor())// 使用OkHttp.setNetworkExecutor(new OkHttpNetworkExecutor()));
3. 需要权限
|
|
4. 友好的调试模式
|
|
开启NoHttp的调试模式后可看到请求过程、日志和错误信息,基本不用抓包。可以看到请求头、请求数据、响应头、Cookie等,而且打印出的Log非常整齐。
5. 第三方异步框架
RxJava 可以与RxJava、RxAndroid、RxBus、EventBus等第三方异步任务框架完美结合使用,这里在demo中给出了和RxJava一起使用的代码。具体的封装请参考Demo的RxNoHttp。
|
|
请求队列
|
|