Konfigurisanje Retrofit proxyja preko OkHttpClienta
Proslijedite konfigurisani OkHttpClient u Retrofit, a osnovni URL API-ja ostavite usmjeren na odredišnu uslugu.
Konfigurišite proxy za prosljeđivanje na OkHttp-u, a zatim isti klijent proslijedite 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 build-a dodajte ovom graditelju tvornice konvertera i adaptera poziva koje aplikacija zahtijeva, a zatim iz ove instance napravite interfejs usluge.
Ostavite baseUrl usmjeren na stvarnu API uslugu. Ako tamo upišete URL proxyja, mijenjate HTTP odredište; to ne konfiguriše pregovaranje s proxyjem. Osnovni URL zadržava i Retrofitov zahtjev za završnom kosom crtom. Dopušteni test javnog API-ja bez autentifikacije proxyja može uzeti HTTP adresu sa liste HTTP proxyja za zasebni Proxy objekat.
Eksplicitni OkHttp proxy ima prednost nad svojim ProxySelectorom. Koristite ga kada klijent treba da ima fiksnog posrednika. Aplikacije kojima je potrebno usmjeravanje zavisno od odredišta trebalo bi da tu politiku osmisle kroz podržani selektor.
Ako je interfejs usluge već napravljen iz druge Retrofit instance, izgradnja ove nove instance ne premješta zahtjeve starog interfejsa. Držite konfigurisani klijent, Retrofit instancu i objekat usluge na istom putu izgradnje.
Za proxy sa autentifikacijom OkHttp izlaže proxyAuthenticator odvojeno od autentifikatora odredišta. Konfigurišite ga na OkHttp graditelju kada je potrebno, a zatim proslijedite gotov klijent u Retrofit. Za proxy sa Basic autentifikacijom koristite ograničeno rukovanje ponovnim pokušajima proxyAuthenticatora.