Ich habe einige Service-URLs mit der gleichen BaseUrl. Für einige URLs werden einige häufig verwendete Parameter verwendet, z. B. apiVersion
oder locale
. Aber sie müssen nicht in jeder URL enthalten sein, daher kann ich sie nicht zur baseUrl hinzufügen.Ersetzen Sie allgemeine Pfadparameter in Nachrüstung 2 mit okhttp
.../api/{apiVersion}/{locale}/event/{eventId}
.../api/{apiVersion}/{locale}/venues
.../api/{apiVersion}/configuration
Ich möchte diese Parameter nicht in der Retrofit-Schnittstelle hinzufügen. In Retrofit 1 habe ich einen Interceptor erstellt und RequestFacade.addPathParam(..., ...)
verwendet, um diese allgemeinen Pfadparameter für jede URL zu füllen.
Für die Nachrüstung 2, ich kann nicht scheinen, einen richtigen Weg zu finden, dies mit okhttp zu tun. Der einzige Weg, wie ich das jetzt sehen kann, ist, die HttpUrl
von Chain.request().httpUrl();
in ein okhttp Interceptor
zu bekommen und das selbst zu manipulieren, aber ich weiß nicht, ob das der beste Weg ist.
Hat jemand einen besseren Weg gefunden, Pfadparameter in einem okhttp Interceptor
zu ersetzen?
Zum Zeitpunkt des Schreibens verwende ich Retrofit: 2.0.0-Beta2 und okhttp: 2.7.2.
Werfen Sie einen Blick auf diese Antwort http://stackoverflow.com/a/31002094. – mtotschnig
@ Mtotschnig gibt es keine aktuelle Antwort (mit OkHttp 3+ & Retrofit 2+) auf diesen Thread. – Singed
@Singed die Antwort ich verlinke funktioniert für mich mit Retrofit2 und OkHttp 3 – mtotschnig