Mam kilka adresów URL usług z tym samym baseUrl. W przypadku niektórych adresów URL będzie kilka najczęściej używanych parametrów, na przykład apiVersion
lub locale
. Ale nie muszą być w każdym adresie URL, więc nie mogę dodać ich do baseUrl.Zamień wspólne parametry ścieżki w modernizacji 2 za pomocą okhttp
.../api/{apiVersion}/{locale}/event/{eventId}
.../api/{apiVersion}/{locale}/venues
.../api/{apiVersion}/configuration
Nie chcę dodawać tych parametrów w interfejsie doposażenia. W retroficie 1 zrobiłem przechwytywacz i użyłem RequestFacade.addPathParam(..., ...)
, aby wypełnić te wspólne parametry ścieżki dla każdego adresu URL.
Dla retrofitu 2, nie mogę znaleźć właściwego sposobu zrobienia tego z okhttp. Jedynym sposobem, jaki widzę teraz, jest to, aby uzyskać HttpUrl
z Chain.request().httpUrl();
w okhttp Interceptor
i manipulować nim samemu, ale nie wiem, czy to jest najlepsza droga.
Czy ktoś ma lepszy sposób na zastąpienie parametrów ścieżki w okhttp Interceptor
?
W czasie pisania używam retrofitu: 2.0.0-beta2 i okhttp: 2.7.2.
Zapraszamy do obejrzenia tej odpowiedzi http://stackoverflow.com/a/31002094. – mtotschnig
@mtotschnig nie ma aktualnej odpowiedzi (przy użyciu OkHttp 3+ i Retrofit 2+) w tym wątku. – Singed
@ Sesed the answer I link to działa dla mnie z Retrofit2 i OkHttp 3 – mtotschnig