Retrofit tarpinio serverio konfigūravimas per OkHttpClient
Perduokite sukonfigūruotą OkHttpClient į Retrofit, o API bazinį URL palikite nukreiptą į paskirties paslaugą.
Sukonfigūruokite persiuntimo tarpinį serverį OkHttp, tada perduokite tą patį klientą į Retrofit:
import java.net.InetSocketAddress;
import java.net.Proxy;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
Proxy proxy = new Proxy(
Proxy.Type.HTTP,
new InetSocketAddress("proxy.example", 8080));
OkHttpClient http = new OkHttpClient.Builder()
.proxy(proxy)
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("https://api.example/")
.client(http)
.build();
Šis fragmentas sukuria transporto sluoksnį ir Retrofit egzempliorių. Prieš build pridėkite prie šio builderio programai reikalingas konverterių ir kvietimų adapterių gamyklas, tada sukurkite paslaugos sąsają iš šio egzemplioriaus.
Laikykite baseUrl nukreiptą į tikrąją API paslaugą. Jei ten įrašysite tarpinio serverio URL, pakeisite HTTP paskirties vietą; tai nesukonfigūruoja derybų su tarpiniu serveriu. Bazinis URL taip pat išlaiko Retrofit reikalavimą dėl galinio pasvirojo brūkšnio. Leidžiamas viešosios API bandymas be tarpinio serverio autentifikavimo gali paimti HTTP adresą iš HTTP tarpinių serverių sąrašo atskiram Proxy objektui.
Aiškus OkHttp tarpinis serveris turi pirmenybę prieš jo ProxySelector. Naudokite tai, kai klientas turi turėti fiksuotą tarpininką. Programos, kurioms reikia nuo paskirties priklausančio maršrutizavimo, tą politiką geriau projektuotų per palaikomą selektorių.
Jei paslaugos sąsaja jau sukurta iš kito Retrofit egzemplioriaus, šio naujo egzemplioriaus kūrimas neperkelia senosios sąsajos užklausų. Laikykite sukonfigūruotą klientą, Retrofit egzempliorių ir paslaugos objektą tame pačiame kūrimo kelyje.
Autentifikuotam tarpiniam serveriui OkHttp pateikia proxyAuthenticator atskirai nuo paskirties autentifikatoriaus. Prireikus sukonfigūruokite jį OkHttp builderiuje, tada perduokite baigtą klientą į Retrofit. Tarpiniam serveriui su Basic autentifikavimu naudokite ribotą proxyAuthenticator pakartojimų apdorojimą.