如何在运行时更改Retrofit baseUrl?

时间:2018-06-07 08:52:25

标签: retrofit2

Android Studio 3.1

这里是我的Retrofit init:

 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;
    }

我在gradle.properties中设置的 API_BASE_URL

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

尼斯。它的工作正常。

但有时候,例如当我运行测试时,我需要更改baseUrl。 为此,我将文件 gradle.properties 中的 DEBUG_API_BASE_URL 中的生产网址更改为测试网址。 完成测试后,我会在文件 gradle.properties 中返回生产网址。 它的工作。但我认为这不是一个好的解决方案。

是否可以在运行时更改baseUrl for Retrofit?

1 个答案:

答案 0 :(得分:0)

如果您使用的是Android(问题中不清楚),您可以使用不同的buildType。请参阅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/\")    
    }
  }
}