适用于OkHttp
以及Retrofit
的一些开源工具,包括文件的上传与下载的进度回调、Oauth2
的token
管理、请求与响应记录的日志输出等。
- 在你的android工程的根目录下的build.gradle文件中的适当的位置添加以下代码:
allprojects {
repositories {
maven { url 'https://jitpack.io' }
}
}
- 在你的android工程中对应的android模块的build.gradle文件中的适当位置添加以下代码:
implementation 'cn.numeron:http:latest_version'
- 通过
OkHttp
的拦截器实现的下载、上传进度监听功能 - 支持
OkHttp
和Retrofit
点击此处 查看文档
- 通过
OkHttp
的拦截器实现的下载、上传进度监听功能 - 同时支持断点续传
- 无需IO操作过程
- 支持
OkHttp
和Retrofit
点击此处 查看文档
- 适用于
Oauth2
授权的APP端token管理工具 - 可添加其它请求头
- 可在服务端返回401响应码时尝试刷新token
点击此处 查看文档
- 可在网络连接超时、网络不稳定导致的错误时,重新发起连接请求。
- 自定义重试次数。
- 使用方法:在构建
OkHttpClient
实例时,添加RetryInterceptor
实例即可。
- 其实就是
HttpLoggingInterceptor
,但是解决了在传输非文本数据时,日志输出乱码的问题。 - 解决了
HttpLoggingInterceptor
导致的上传、下载文件时无法触发回调的问题。 - 使用方法:在构建
OkHttpClient
实例时,添加TextLogInterceptor
实例即可。
- 使用
Port
或Url
注解为Api指定访问端口或地址。 - 在初始化
OkHttpClient
时,添加DynamicUrlInterceptor
拦截器,并放在靠前的位置。 - 示例:
/** 此接口下所有的方法均通过指定的url地址访问,优先级低于方法上的注解 */ @Url("http://192.168.1.111:8081/") interface LoginApi { /** 指定此方法在调用时,访问服务器的8080端口 */ @Port(8080) @POST("api/user/login") suspend fun login(@Body payload: LoginPayload): LoginResponse /** 指定此方法在调用时,访问指定url地址 */ @Url("http://192.168.1.111:8081/") @POST("api/user/login") suspend fun logout(@Body payload: LoginPayload): LogoutResponse }
- 使用
RequestTimeout
注解为Api指定请求超时时间,可标记在方法和接口上。 - 在初始化
OkHttpClient
时,添加DynamicTimeoutInterceptor
拦截器。 - 示例:
interface LoginApi { /** 此请求在访问API时,读取、写入、连接的超时时间均为8秒 */ @RequestTimeout(value = 8, unit = TimeUnit.SECONDS) @POST("api/user/login") suspend fun login(@Body payload: LoginPayload): LoginResponse }