Mit Retrofit 2 können Sie eine vollständige URL in der Anmerkung einer Servicemethode festlegen, z.
public interface APIService {
@GET("http://api.mysite.com/user/list")
Call<Users> getUsers();
}
In meiner App ist die URL meiner Webservices zum Zeitpunkt der Kompilierung jedoch nicht bekannt. Die App ruft sie in einer heruntergeladenen Datei ab, sodass ich mich frage, wie ich Retrofit 2 mit vollständiger dynamischer URL verwenden kann.
Ich habe versucht, einen vollständigen Pfad festzulegen wie:
public interface APIService {
@GET("{fullUrl}")
Call<Users> getUsers(@Path("fullUrl") fullUrl);
}
new Retrofit.Builder()
.baseUrl("http://api.mysite.com/")
.build()
.create(APIService.class)
.getUsers("http://api.mysite.com/user/list"); // this url should be dynamic
.execute();
Aber hier sieht Retrofit nicht, dass der Pfad tatsächlich eine vollständige URL ist und versucht herunterzuladen http://api.mysite.com/http%3A%2F%2Fapi.mysite.com%2Fuser%2Flist
Gibt es einen Hinweis darauf, wie ich Retrofit mit solch einer dynamischen URL verwenden könnte?
Danke dir
Antworten:
Ich denke, Sie verwenden es falsch. Hier ist ein Auszug aus dem Changelog :
Ihre Benutzeroberfläche sollte also folgendermaßen aussehen:
quelle
Ich wollte nur einen Teil der URL ersetzen, und mit dieser Lösung muss ich nicht die gesamte URL übergeben, sondern nur den dynamischen Teil:
quelle
Sie können das codierte Flag für die
@Path
Anmerkung verwenden:/
mit%2F
.?
ersetzt zu werden%3F
, sodass Sie immer noch keine dynamischen Abfragezeichenfolgen übergeben können.quelle
Ab Retrofit 2.0.0-beta2, wenn ein Dienst JSON über diese URL antwortet: http: // myhost / mypath
Folgendes funktioniert nicht:
Aber das ist ok:
quelle
Sie können dies verwenden:
Weitere Informationen finden Sie in der Dokumentation unter https://square.github.io/retrofit/.
quelle
Schritt 1
Schritt 2 Definieren Sie für eine bewährte Methode eine Klasse für die Nachrüstinstanz: -
} Schritt 3 Definieren Sie in Ihrer Aktivität: -
quelle
Mit der in kotlin geschriebenen RetrofitHelper- Bibliothek können Sie API-Aufrufe mit wenigen Codezeilen durchführen und verschiedene URLs, Header und Parameter verwenden und bei jedem Aufruf .
Fügen Sie Ihrer Anwendungsklasse mehrere URLs wie folgt hinzu:
Verwenden Sie dann die URL, die Sie für Ihren Anruf benötigen:
Weitere Informationen finden Sie in der Dokumentation
quelle
Dynamische URL mit Get- und Post-Methode in Retrofit (MVVM)
Nachrüst-Serviceschnittstelle:
MVVM-Serviceklasse:
und Retrofit Client-Klasse
Dies ist beispielsweise die URL: https://gethelp.wildapricot.com/de/articles/549-changing-your
baseURL: https://gethelp.wildapricot.com
Verbleibende @Url: / de / articles / 549-changing-your (was Sie in der Retro-Serviceklasse bestehen)
quelle
quelle
Wenn Sie Ihr Code-Setup bereits haben und keine Änderungen an den verschiedenen Schnittstellen vornehmen möchten, verwenden Sie die in diesem Link beschriebene Lösung . Der Hauptpunkt ist die Methode
changeApiBaseUrl
, mit der die URL aktualisiert und der Builder für Nachrüstung neu erstellt wird.Sie können es wie folgt verwenden:
quelle