Dynamische Basis-URL mit Retrofit 2.0 und Dagger 2 @ setz

Ich versuche, mit Retrofit 2.0 und Dolch 2 eine Anmeldeaktion durchzuführen.

So richte ich Retrofit-Abhängigkeit ein

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

Hier ist die API-Schnittstelle.

interface LoginAPI {
   @GET(relative_path)
   Call<Boolean> logMe();
}

Ich habe drei verschiedene Basis-URLs, bei denen sich Benutzer anmelden können. Daher kann ich beim Einrichten der Retrofit-Abhängigkeit keine statische URL festlegen. Ich habe eine setUrl () - und eine getUrl () -Methode für die Anwendungsklasse erstellt. Bei der Benutzeranmeldung habe ich die URL auf Application gesetzt, bevor ich den API-Aufruf aufgerufen habe.

Ich benutze Lazy Injection zum Nachrüsten wie folgt

Lazy<Retrofit> retrofit

Auf diese Weise injiziert Dolch Abhängigkeit nur, wenn ich @ aufrufen ka

retrofit.get()

Dieser Teil funktioniert gut. Ich habe die URL eingestellt, um die Abhängigkeit nachzurüsten. Das Problem tritt jedoch auf, wenn der Benutzer eine falsche Basis-URL (z. B. mywifi.domain.com) eingibt, die falsche versteht und diese ändert (z. B. mydata.domain.com). Da Dagger die Abhängigkeit für die Nachrüstung bereits erstellt hat, wird dies nicht erneut durchgeführt. Also muss ich die App erneut öffnen und die richtige URL eingeben.

Ich lese verschiedene Beiträge zum Einrichten dynamischer URLs bei Retrofit mit Dagger. In meinem Fall hat nichts wirklich gut geklappt. Vermisse ich etwas?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage