同步操作将从 Jenly/RetrofitHelper 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
RetrofitHelper for Android 是一个为 Retrofit 提供便捷配置多个BaseUrl相关的扩展帮助类。
由于2021年2月3日 JFrog宣布将关闭Bintray和JCenter,计划在2022年2月完全关闭。 所以后续版本不再发布至 JCenter
allprojects {
repositories {
//...
mavenCentral()
}
}
//AndroidX 版本
implementation 'com.github.jenly1314:retrofit-helper:1.0.1'
compileOnly "androidx.appcompat:appcompat:$versions.appcompat"
compileOnly "com.squareup.retrofit2:retrofit:$versions.retrofit"
因为 RetrofitHelper 的依赖只在编译时有效,并未打入包中,所以您的项目中必须依赖上面列出相关库
主要集成步骤代码示例
Step.1 需使用JDK8编译,在你项目中的build.gradle的android{}中添加配置:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
Step.2 通过RetrofitUrlManager初始化OkHttpClient,进行初始化配置
//通过RetrofitHelper创建一个支持多个BaseUrl的 OkHttpClient
//方式一
val clientBuilder = RetrofitHelper.getInstance()
.createClientBuilder()
//...你自己的其他配置
//方式二
val okHttpClient = RetrofitHelper.getInstance()
.with(clientBuilder)
//...你自己的其他配置
.build()
//完整示例
val okHttpClient = RetrofitHelper.getInstance()
.createClientBuilder()
.addInterceptor(LogInterceptor())
.build()
val retrofit = Retrofit.Builder()
.baseUrl(Constants.BASE_URL)
.client(okHttpClient)
.addConverterFactory(GsonConverterFactory.create(Gson()))
.build()
Step.3 定义接口时,通过注解标记对应接口,支持动态改变 BaseUrl相关功能
interface ApiService {
/**
* 接口示例,没添加任何标识,和常规使用一致
* @return
*/
@GET("api/user")
fun getUser(): Call<User>
/**
* Retrofit默认返回接口定义示例,添加 DomainName 标示 和 Timeout 标示
* @return
*/
@DomainName(domainName) // domainName 域名别名标识,用于支持切换对应的 BaseUrl
@Timeout(connectTimeout = 15,readTimeout = 15,writeTimeout = 15,timeUnit = TimeUnit.SECONDS) //超时标识,用于自定义超时时长
@GET("api/user")
fun getUser(): Call<User>
/**
* 动态改变 BaseUrl
* @return
*/
@BaseUrl(baseUrl) //baseUrl 标识,用于支持指定 BaseUrl
@GET("api/user")
fun getUser(): Call<User>
//--------------------------------------
/**
* 使用RxJava返回接口定义示例,添加 DomainName 标示 和 Timeout 标示
* @return
*/
@DomainName(domainName) // domainName 域名别名标识,用于支持切换对应的 BaseUrl
@Timeout(connectTimeout = 20,readTimeout = 10) //超时标识,用于自定义超时时长
@GET("api/user")
fun getUser(): Observable<User>
}
Step.4 添加多个 BaseUrl 支持
//添加多个 BaseUrl 支持 ,domainName为域名别名标识,domainUrl为域名对应的 BaseUrl,与上面的接口定义表示一致即可生效
RetrofitHelper.getInstance().putDomain(domainName,domainUrl)
//添加多个 BaseUrl 支持 示例
RetrofitHelper.getInstance().apply {
//GitHub baseUrl
putDomain(Constants.DOMAIN_GITHUB,Constants.GITHUB_BASE_URL)
//Google baseUrl
putDomain(Constants.DOMAIN_GOOGLE,Constants.GOOGLE_BASE_URL)
}
RetrofitHelper
/**
* Retrofit帮助类
* <p>
* 主要功能介绍:
* 1.支持管理多个 BaseUrl,且支持运行时动态改变
* 2.支持接口自定义超时时长,满足每个接口动态定义超时时长
* 3.支持添加公共请求头
* <p>
*
* RetrofitHelper中的核心方法
*
* {@link #createClientBuilder()} 创建 {@link OkHttpClient.Builder}初始化一些配置参数,用于支持多个 BaseUrl
*
* {@link #with(OkHttpClient.Builder)} 传入 {@link OkHttpClient.Builder} 配置一些参数,用于支持多个 BaseUrl
*
* {@link #setBaseUrl(String)} 和 {@link #setBaseUrl(HttpUrl)} 主要用于设置默认的 BaseUrl。
*
* {@link #putDomain(String, String)} 和 {@link #putDomain(String, HttpUrl)} 主要用于支持多个 BaseUrl,且支持 BaseUrl 动态改变。
*
* {@link #setDynamicDomain(boolean)} 设置是否支持 配置多个BaseUrl,且支持动态改变,一般会通过其他途径自动开启,此方法一般不会主动用到,只有在特殊场景下可能会有此需求,所以提供此方法主要用于提供更多种可能。
*
* {@link #setHttpUrlParser(HttpUrlParser)} 设置 HttpUrl解析器 , 当前默认采用的 {@link DomainParser} 实现类,你也可以自定义实现 {@link HttpUrlParser}
*
* {@link #setAddHeader(boolean)} 设置是否添加头,一般会通过{@link #addHeader(String, String)}相关方法自动开启,此方法一般不会主动用到,只有特殊场景下会有此需求,主要用于提供统一控制。
*
* {@link #addHeader(String, String)} 设置头,主要用于添加公共头消息。
*
* {@link #addHeaders(Map)} 设置头,主要用于设置公共头消息。
*
* 这里只是列出一些对外使用的核心方法,和相关的简单说明。如果想了解更多,可以查看对应的方法和详情。
*
* <p>
*
* @author <a href="mailto:jenly1314@gmail.com">Jenly</a>
*/
public final class RetrofitHelper{
//...
}
特别说明
//通过setBaseUrl可以动态改变全局的 BaseUrl,优先级比putDomain(domainName,domainUrl)低,谨慎使用
RetrofitHelper.getInstance().setBaseUrl(dynamicUrl)
更多使用详情,请查看Demo中的源码使用示例或直接查看API帮助文档
如果你喜欢RetrofitHelper,或感觉RetrofitHelper帮助到了你,可以点右上角“Star”支持一下,你的支持就是我的动力,谢谢
你也可以扫描下面的二维码,请作者喝杯咖啡
Name: Jenly
Email: jenly1314#gmail.com / jenly1314#vip.qq.com
CSDN: jenly121
CNBlogs: jenly
GitHub: jenly1314
Gitee: jenly1314
加入QQ群: 20867961
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。