Konfiguracija proxyja Retrofit prek OkHttpClient
Posredujte Retrofit konfiguriranega OkHttpClient, osnovni URL API-ja pa pustite usmerjen na ciljno storitev.
Konfigurirajte posredniški proxy v OkHttp, nato posredujte isti odjemalec v 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();
Ta del zgradi transportni sloj in instanco Retrofit. Pred build dodajte temu graditelju tovarne pretvornikov in prilagoditeljev klicev, ki jih aplikacija potrebuje, nato ustvarite vmesnik storitve iz te instance.
Pustite baseUrl usmerjen na dejansko storitev API. Če tja vstavite URL proxyja, spremenite cilj HTTP; to ne konfigurira pogajanj s proxyjem. Osnovni URL ohrani tudi zahtevo Retrofit po končni poševnici. Dovoljen test javnega API-ja brez avtentikacije proxyja lahko vzame naslov HTTP s seznama proxyjev HTTP za ločen objekt Proxy.
Izrecni proxy OkHttp ima prednost pred svojim ProxySelectorjem. Uporabite ga, ko mora imeti odjemalec stalnega posrednika. Aplikacije, ki potrebujejo usmerjanje glede na cilj, naj to politiko raje zasnujejo prek podprtega izbirnika.
Če je bil vmesnik storitve že ustvarjen iz druge instance Retrofit, gradnja te nove instance ne premakne zahtev starega vmesnika. Ohranite konfiguriranega odjemalca, instanco Retrofit in objekt storitve na isti poti gradnje.
Za proxy z avtentikacijo OkHttp izpostavi proxyAuthenticator ločeno od avtentikatorja cilja. Konfigurirajte ga v graditelju OkHttp, ko je potrebno, nato posredujte dokončanega odjemalca v Retrofit. Za proxy z avtentikacijo Basic uporabite omejeno obravnavo ponovitev proxyAuthenticatorja.