E Retrofit-Proxy iwwer OkHttpClient konfiguréieren
Gitt engem Retrofit en konfiguréierten OkHttpClient, wärend d’Basis-URL vun der API weider op den Zilsdéngscht weist.
Konfiguréiert de Forward-Proxy op OkHttp a gitt duerno dee selwechte Client un 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();
Dëst Fragment baut d’Transportschicht an d’Retrofit-Instanz op. Füügt virum build dem Builder d’Konverter- an d’Call-Adapter-Fabriken derbäi, déi d’Applikatioun brauch, a maacht duerno de Service-Interface aus dëser Instanz.
Loosst baseUrl op den tatsächlechen API-Service weisen. Wann dir do d’Proxy-URL ersetzt, ännert Dir d’HTTP-Zil; dat konfiguréiert net d’Proxy-Verhandlung. D’Basis-URL behält och dem Retrofit seng Fuerderung vun engem Schlussschrägstrich. En erlaabten Test vun enger ëffentlecher API ouni Proxy-Authentifikatioun kann eng HTTP-Adress aus der Lëscht vun HTTP-Proxye fir dat separat Proxy-Objekt huelen.
En expliziten OkHttp-Proxy huet Virrang viru sengem ProxySelector. Benotzt dat, wann de Client en fixe Vermëttler brauch. Applikatiounen, déi zilofhängeg Routing brauchen, sollten déi Politik léiwer iwwer den ënnerstëtzten Selector designen.
Wann de Service-Interface schonn aus enger anerer Retrofit-Instanz erstallt gouf, verréckelt den Opbau vun dëser neier Instanz d’Ufroe vum ale Interface net. Halt de konfiguréierte Client, d’Retrofit-Instanz an d’Service-Objekt um selwechte Konstruktiounswee.
Fir en authentifizéierte Proxy stellt OkHttp de proxyAuthenticator getrennt vum Zil-Authenticator zur Verfügung. Konfiguréiert en op dem OkHttp-Builder wann néideg, a gitt duerno de fäerdege Client un Retrofit. Fir en Proxy mat Basic-Authentifikatioun benotzt begrenzt Widderhuelungsbehandlung vum proxyAuthenticator.