Konfiguriranje Retrofit proxyja putem OkHttpClienta
Predajte konfigurirani OkHttpClient u Retrofit, a osnovni URL API-ja ostavite usmjeren na odredišnu uslugu.
Konfigurirajte proxy za prosljeđivanje na OkHttp-u, zatim taj isti klijent predajte u 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();
Ovaj isječak gradi transportni sloj i instancu Retrofit. Prije poziva build dodajte ovom graditelju tvornice pretvarača i adaptera poziva koje aplikacija zahtijeva, a zatim iz ove instance stvorite sučelje usluge.
Držite baseUrl usmjeren na stvarnu API uslugu. Ako tamo upišete URL proxyja, mijenjate HTTP odredište; to ne konfigurira pregovaranje s proxyjem. Osnovni URL također zadržava Retrofitov zahtjev za završnom kosom crtom. Dopušteni test javnog API-ja bez autentifikacije proxyja može uzeti HTTP adresu s popisa HTTP proxyja za zasebni Proxy objekt.
Eksplicitni OkHttp proxy ima prednost pred svojim ProxySelectorom. Koristite to kada klijent treba imati fiksnog posrednika. Aplikacije kojima treba usmjeravanje ovisno o odredištu trebale bi tu politiku radije osmisliti kroz podržani selektor.
Ako je sučelje usluge već stvoreno iz druge Retrofit instance, izgradnja ove nove instance ne prenosi zahtjeve starog sučelja. Držite konfigurirani klijent, Retrofit instancu i objekt usluge na istom putu izgradnje.
Za proxy koji zahtijeva autentifikaciju OkHttp izlaže proxyAuthenticator odvojeno od autentifikatora odredišta. Konfigurirajte ga na OkHttp graditelju kada je potrebno, a zatim predajte dovršeni klijent u Retrofit. Za proxy sa Basic autentifikacijom koristite ograničeno rukovanje ponovnim pokušajima proxyAuthenticatora.