Configura il proxy in uscita su OkHttp, poi passa lo stesso client a 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();

Il frammento costruisce il livello di trasporto e l’istanza Retrofit. Prima di build aggiungi a questo builder le factory di convertitori e adapter di chiamata richieste dall’applicazione, poi crea l’interfaccia di servizio da questa istanza.

Mantieni baseUrl rivolto al servizio API reale. Se ci metti l’URL del proxy, cambi la destinazione HTTP; non configuri la negoziazione con il proxy. L’URL di base conserva anche il requisito di Retrofit di una barra finale. Un test consentito su un’API pubblica senza autenticazione proxy può prendere un indirizzo HTTP dalla lista dei proxy HTTP per l’oggetto Proxy separato.

Un proxy OkHttp esplicito ha la precedenza sul suo ProxySelector. Usalo quando il client deve avere un intermediario fisso. Le applicazioni che necessitano di instradamento dipendente dalla destinazione dovrebbero progettare quella politica tramite il selettore supportato.

Se l’interfaccia di servizio è già stata creata da un’altra istanza Retrofit, costruire questa nuova istanza non sposta le richieste della vecchia interfaccia. Mantieni il client configurato, l’istanza Retrofit e l’oggetto di servizio sullo stesso percorso di costruzione.

Per un proxy autenticato, OkHttp espone proxyAuthenticator separatamente dal suo autenticatore di destinazione. Configuralo sul builder OkHttp quando serve, poi passa il client completo a Retrofit. Per un proxy con autenticazione Basic, usa una gestione limitata dei tentativi di proxyAuthenticator.

Articoli correlati