RetrofitHelper для Android — это вспомогательный класс, который упрощает настройку нескольких базовых URL-адресов для Retrofit.
Вы также можете напрямую загрузить демонстрационное приложение, чтобы оценить его работу.
repositories {
//...
mavenCentral()
}
// AndroidX версия
implementation 'com.github.jenly1314:retrofit-helper:1.1.0'
Поскольку RetrofitHelper зависит от retrofit, который эффективен только во время компиляции, ваш проект также должен зависеть от retrofit для нормального использования.
Step 1. Используйте JDK8 для компиляции. Добавьте конфигурацию в файл android{} файла build.gradle:
compileOptions {
targetCompatibility JavaVersion.VERSION_1_8
sourceCompatibility JavaVersion.VERSION_1_8
}
Step 2. Инициализируйте OkHttpClient с помощью RetrofitHelper.
// Создайте OkHttpClient, поддерживающий несколько базовых URL, с помощью RetrofitHelper
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. При определении интерфейса используйте аннотации для маркировки соответствующего интерфейса. Это позволит динамически изменять базовые URL и другие функции.
interface ApiService {
/**
* Пример интерфейса без каких-либо меток, как обычно используется
* @return
*/
@GET("api/user")
fun getUser(): Call<User>
/**
* Стандартный ответ интерфейса Retrofit, включая метки DomainName и Timeout
* @return
*/
@DomainName(domainName) // domainName — псевдоним домена, используемый для поддержки переключения на соответствующий базовый URL
@Timeout(connectTimeout = 15,readTimeout = 15,writeTimeout = 15,timeUnit = TimeUnit.SECONDS) // Метка тайм-аута, используемая для настройки времени ожидания
@GET("api/user")
fun getUser(): Call<User>
/**
* Динамическое изменение базового URL
* @return
*/
@BaseUrl(baseUrl) // baseUrl — метка, используемая для поддержки указания базового URL
@GET("api/user")
fun getUser(): Call<User>
//--------------------------------------
/**
* Использование RxJava для возврата интерфейса, включая метки DomainName и Timeout
* @return
*/
@DomainName(domainName) // domainName — псевдоним домена, используемый для поддержки переключения на соответствующий базовый URL
@Timeout(connectTimeout = 20,readTimeout = 10) // Метка таймаута, используемая для настройки времени ожидания
@GET("api/user")
fun getUser(): Observable<User>
/**
* Загрузка; можно отслеживать прогресс загрузки через RetrofitHelper.getInstance().addResponseListener(key, listener)
*/
@ResponseProgress(key) // Поддержка мониторинга прогресса ответа, настраиваемая конфигурация ключа мониторинга
@Streaming
@GET("api/download")
fun download(): Call<ResponseBody>
}
Step 4. Добавьте поддержку нескольких базовых URL.
// Поддержка нескольких базовых URL, domainName — псевдоним домена, domainUrl — базовый URL, соответствующий псевдониму домена
RetrofitHelper.getInstance().putDomain(domainName,domainUrl)
``` ## Связаться со мной
| **WeChat** | **Gmail** | **QQ** | **QQ группа 1** | **QQ группа 2** |
|:----------| :------------------------------------------------------------------------------| :-------------------------------------------------------------------------------|:--------------------------------------------------------------------------|:----------------------------------------------------------------------------|
| Jenly666 | jenly1314@gmail.com | jenly1314@vip.qq.com | 20867961 | 64020761 |
<div>
<img src="https://jenly1314.github.io/image/page/footer.png">
</div>
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )