Konfigurer en Retrofit-proxy via OkHttpClient
Giv Retrofit en konfigureret OkHttpClient, mens API’ets basis-URL stadig peger på destinationstjenesten.
Konfigurer forward-proxyen på OkHttp, og giv derefter den samme klient til 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();
Uddraget opbygger transportlaget og Retrofit-forekomsten. Før build skal du føje de konverter- og call-adapterfabrikker, applikationen kræver, til denne builder og derefter oprette dens serviceinterface ud fra denne forekomst.
Hold baseUrl pegende på den faktiske API-tjeneste. Sætter du proxy-URL’en der, ændrer du HTTP-destinationen; det konfigurerer ikke proxy-forhandling. Basis-URL’en bevarer også Retrofits krav om en afsluttende skråstreg. En tilladt test af et offentligt API uden proxy-godkendelse kan hente en HTTP-adresse fra listen over HTTP-proxyer til det separate Proxy-objekt.
En eksplicit OkHttp-proxy har forrang for sin ProxySelector. Brug den, når klienten skal have en fast mellemmand. Applikationer, der har brug for destinationsafhængig routing, bør hellere designe den politik via den understøttede selector.
Hvis serviceinterfacet allerede er oprettet ud fra en anden Retrofit-forekomst, flytter opbygningen af denne nye forekomst ikke den gamle interfaces anmodninger. Hold den konfigurerede klient, Retrofit-forekomsten og serviceobjektet på samme opbygningsvej.
For en proxy med godkendelse eksponerer OkHttp proxyAuthenticator adskilt fra sin destinationsgodkender. Konfigurer den på OkHttp-builderen, når det er nødvendigt, og send derefter den færdige klient til Retrofit. Til en proxy med Basic-godkendelse brug begrænset håndtering af proxyAuthenticator-forsøg.