Konfigureer ’n Retrofit-proxy via OkHttpClient
Voorsien ’n gekonfigureerde OkHttpClient aan Retrofit terwyl die API-basis-URL na die bestemmingdiens bly wys.
Konfigureer die vorentoe-proxy op OkHttp en voorsien daardie selfde kliënt dan aan 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();
Die fragment bou die vervoerlaag en die Retrofit-instantie. Voeg die toepassing se vereiste omsetter- en oproepaanpasser-fabrieke by hierdie bouer voor build, en skep dan sy dienskoppelvlak uit hierdie instantie.
Hou baseUrl op die werklike API-diens gerig. As jy die proxy-URL daar instel, verander dit die HTTP-bestemming; dit konfigureer nie proxy-onderhandeling nie. Die basis-URL behou ook Retrofit se vereiste vir ’n sluitende skuinsstreep. ’n Toegelate toets teen ’n publieke API sonder proxy-verifikasie kan ’n HTTP-adres uit die HTTP-instaanbedienerlys vir die aparte Proxy-objek neem.
’n Eksplisiete OkHttp-proxy het voorrang bo sy ProxySelector. Gebruik dit wanneer die kliënt ’n vaste tussenganger moet hê. Toepassings wat bestemmingafhanklike routing nodig het, behoort daardie beleid eerder deur die ondersteunde selector te ontwerp.
As die dienskoppelvlak reeds uit ’n ander Retrofit-instantie geskep is, skuif die bou van hierdie nuwe instantie nie die ou koppelvlak se versoeke nie. Hou die gekonfigureerde kliënt, die Retrofit-instantie en die diensobjek op dieselfde konstruksiepad.
Vir ’n proxy met verifikasie stel OkHttp die proxyAuthenticator apart van sy bestemmingsverifikasie beskikbaar. Konfigureer dit op die OkHttp-bouer wanneer nodig en gee dan die voltooide kliënt aan Retrofit. Vir ’n proxy met Basic-verifikasie, gebruik begrensde proxyAuthenticator-herprobeerhantering.