Konfigurace proxy pro Retrofit přes OkHttpClient
Předejte nakonfigurovaný OkHttpClient do Retrofit a základní URL API nechte směřovat na cílovou službu.
Nakonfigurujte dopředné proxy v OkHttp a poté předejte stejný klient do 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();
Úryvek sestaví transportní vrstvu i instanci Retrofit. Před voláním build přidejte do tohoto builderu továrny převodníků a adaptérů volání, které aplikace vyžaduje, a poté z této instance vytvořte rozhraní služby.
Ponechte baseUrl směřující na skutečnou službu API. Pokud tam vložíte URL proxy, změníte cíl HTTP; konfiguraci vyjednávání s proxy to neprovede. Základní URL také zachovává požadavek Retrofitu na koncové lomítko. Povolený test veřejného API bez autentizace proxy může pro samostatný objekt Proxy vzít HTTP adresu ze seznamu HTTP proxy.
Explicitní proxy v OkHttp má přednost před svým ProxySelector. Použijte to, když má mít klient pevného prostředníka. Aplikace, které potřebují směrování závislé na cíli, by měly tuto politiku navrhnout podporovaným selektorem.
Pokud bylo rozhraní služby již vytvořeno z jiné instance Retrofit, sestavení této nové instance nepřesune požadavky starého rozhraní. Udržujte nakonfigurovaného klienta, instanci Retrofit a objekt služby na stejné cestě sestavení.
U proxy s autentizací vystavuje OkHttp proxyAuthenticator odděleně od autentizátoru cíle. Nastavte jej v builderu OkHttp, když je potřeba, a poté předejte hotového klienta do Retrofit. Pro proxy s autentizací Basic použijte omezené zpracování opakování proxyAuthenticatoru.