2015-01-07 13 views
10

Ich würde gerne wissen, wie man einen RestAdapter erstellen, der zwischen zwei Endpunkten wechseln kann. Derzeit wird der RestAdapter in meiner App in der Application-Klasse (Singleton) erstellt. Ich suche nach einer Möglichkeit, verschiedene Endpunkte zu haben, ohne mehrere RestAdapter zu erstellen.Retrofit - Mehrere Endpunkte mit dem gleichen RestAdapter

Antwort

5

Der Endpunkt wird für jede Anforderung aufgerufen. Wenn Sie einen Algorithmus einschalten möchten, können Sie einen eigenen Algorithmus implementieren (z. B. Round-Robin). Abgesehen davon ist ein einzelner RestAdapter an einen Endpunkt gebunden, Sie können ihn nicht auf einer Methode oder einer anderen Art steuern. - Jake Wharton

Also habe ich verschiedene Rest-Adapter für die verschiedenen Endpunkte erstellt, die ich in meiner App verwende.

8

Retrofit 1 ruft Endpoint für jede Anforderung (kein Cache), Sie nur Retrofit.Endpoint mit einigen Setter müssen erweitern und diese Endpoint passieren, wenn Ihr die RestAdapter erstellen:

Endpoint mDynamicEndpoint = new DynamicEndpoint("http://firstdomain.fr"); 
RestAdapter restAdapter = new RestAdapter.Builder() 
    .setEndpoint(mDynamicEndpoint) 
    .build(); 

mDynamicEndpoint.setBaseUrl("http://yourdomain.com"); 

Mögliche doppelte: Dynamic Paths in Retrofit

0

Sie könnten eine Karte vom Endpunkt zum RestAdapter haben. Sie würden mit einem Adapter für jede Domäne enden. Keine gute Lösung, wenn Sie viele Endpunkte haben.

Ich glaube, dass die obige DynamicEndpoint-Lösung zu Wettlaufbedingungen führen kann, wenn zwei Anforderungen an verschiedene Endpunkte zur gleichen Zeit ausgelöst wurden.

Verwandte Themen