Как изменить Retrofit baseUrl во время выполнения? - PullRequest
0 голосов
/ 07 июня 2018

Android Studio 3.1

Вот мой инициализированный Retrofit:

 private static Retrofit.Builder builder = new Retrofit.Builder()
            .baseUrl(BuildConfig.API_BASE_URL)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .client(httpClient.build());

    private static Retrofit retrofit = builder.build();

    public static <T> T createRestClient(Class<T> restClientClass) {
        retrofit = builder.build();
        return retrofit.create(restClientClass);
    }

    public static Retrofit getRetrofit() {
        return retrofit;
    }

API_BASE_URL Я установил в gradle.properties:

DEBUG_API_BASE_URL=\"http://myhost.com/\"

Ницца.Это нормально работает.

Но иногда, например, когда я запускаю тесты, мне нужно изменить baseUrl.Для этого я меняю производственный URL в DEBUG_API_BASE_URL в файле gradle.properties , чтобы проверить URL.После окончания тестирования я возвращаю производственный URL в файл gradle.properties .Это работает.Но я думаю, что это не очень хорошее решение.

Можно ли изменить во время выполнения baseUrl для модернизации?

1 Ответ

0 голосов
/ 07 июня 2018

Если вы используете Android (непонятно из вопроса), вы можете использовать разные типы сборки.См. https://developer.android.com/studio/build/gradle-tips раздел «Совместное использование пользовательских полей и значений ресурсов с кодом вашего приложения»

android {
  ...
  buildTypes {
    release {
      buildConfigField("String", "API_BASE_URL", \"http://www.myhost.com/\")

    }
    debug {

      buildConfigField("String", "API_BASE_URL", \"http://staging.myhost.com/\")    
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...