1 Star 0 Fork 14

snowind / RetrofitHelper

forked from Jenly / RetrofitHelper 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
README.md 7.42 KB
一键复制 编辑 原始数据 按行查看 历史
Jenly 提交于 2020-05-31 00:43 . CI

RetrofitHelper

Image

Download JCenter JitPack CI CircleCI API License Blog QQGroup

RetrofitHelper for Android 是一个为 Retrofit 提供便捷配置多个BaseUrl相关的扩展帮助类。

主要功能介绍

  • 支持配置多个BaseUrl
  • 支持动态改变BaseUrl
  • 支持动态配置超时时长

Gif 展示

Image

引入

Maven:

<dependency>
  <groupId>com.king.retrofit</groupId>
  <artifactId>retrofit-helper</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>

Gradle:

//AndroidX 版本
implementation 'com.king.retrofit:retrofit-helper:1.0.0'

Lvy:

<dependency org='com.king.retrofit' name='retrofit-helper' rev='1.0.0'>
  <artifact name='$AID' ext='pom'></artifact>
</dependency>

RetrofitHelper引入的库(具体对应版本请查看 Versions

    compileOnly "androidx.appcompat:appcompat:$versions.appcompat"
    compileOnly "com.squareup.retrofit2:retrofit:$versions.retrofit"

因为 RetrofitHelper 的依赖只在编译时有效,并未打入包中,所以您的项目中必须依赖上面列出相关库

如果Gradle出现compile失败的情况,可以在Project的build.gradle里面添加如下:(也可以使用上面的GitPack来complie)
allprojects {
    repositories {
        maven { url 'https://dl.bintray.com/jenly/maven' }
    }
}

示例

主要集成步骤代码示例

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 okHttpClient = RetrofitHelper.getInstance()
            .createClientBuilder()
            //...你自己的其他配置
            .build()
//方式二
val okHttpClient = RetrofitHelper.getInstance()
            .with(builder)
            //...你自己的其他配置
            .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>

     //--------------------------------------

     /**
      * 使用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)
        }
        //通过setBaseUrl可以动态改变全局的 BaseUrl,优先级比putDomain(domainName,domainUrl)低,谨慎使用
        RetrofitHelper.getInstance().setBaseUrl(dynamicUrl)

更多使用详情,请查看Demo中的源码使用示例或直接查看API帮助文档

版本记录

v1.0.0:2020-5-30

  • RetrofitHelper初始版本

赞赏

如果你喜欢RetrofitHelper,或感觉RetrofitHelper帮助到了你,可以点右上角“Star”支持一下,你的支持就是我的动力,谢谢 :smiley:

你也可以扫描下面的二维码,请作者喝杯咖啡 :coffee:

关于我

Name: Jenly

Email: jenly1314#gmail.com / jenly1314#vip.qq.com

CSDN: jenly121

CNBlogs: jenly

GitHub: jenly1314

Gitee: jenly1314

加入QQ群: 20867961

Android
1
https://gitee.com/snowid/RetrofitHelper.git
git@gitee.com:snowid/RetrofitHelper.git
snowid
RetrofitHelper
RetrofitHelper
master

搜索帮助