Definir URL base dinâmico usando Retrofit 2.0 e Dagger 2
Estou tentando executar uma ação de login usando o Retrofit 2.0 usando o Dagger 2
Veja como eu configuro a dependência de Retrofit
@Provides
@Singleton
Retrofit provideRetrofit(Gson gson, OkHttpClient client) {
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(GsonConverterFactory.create(gson)
.client(client)
.baseUrl(application.getUrl())
.build();
return retrofit;
}
Aqui está a interface da API.
interface LoginAPI {
@GET(relative_path)
Call<Boolean> logMe();
}
Eu tenho três URLs base diferentes que os usuários podem fazer login. Portanto, não consigo definir um URL estático ao configurar a dependência de Retrofit. Criei os métodos setUrl () e getUrl () na classe Application. Após o login do usuário, defino o URL em Aplicativo antes de chamar a chamada da API.
Eu uso injeção preguiçosa para modernizar assim
Lazy<Retrofit> retrofit
Dessa forma, Dagger injeta dependência apenas quando posso chamar
retrofit.get()
Esta parte funciona bem. Eu tenho o URL definido para atualizar a dependência. No entanto, o problema surge quando o usuário digita um URL de base errado (por exemplo, mywifi.domain.com), entende que é o errado e o altera (por exemplo, mydata.domain.com). Como o Dagger já criou a dependência para o retrofit, ele não funcionará novamente. Então, eu tenho que reabrir o aplicativo e digite o URL correto.
Eu li postagens diferentes para configurar URLs dinâmicos no Retrofit usando o Dagger. Nada realmente funcionou bem no meu caso. Perco alguma coisa?