Configura el proxy directe a OkHttp i després passa aquest mateix 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();

Aquest fragment construeix la capa de transport i la instància de Retrofit. Abans de cridar build, afegeix a aquest constructor les fàbriques de convertidors i d’adaptadors de crides que necessiti l’aplicació, i després crea la interfície de servei a partir d’aquesta instància.

Mantén baseUrl apuntant al servei d’API real. Si hi poses l’URL del proxy, canvies la destinació HTTP; no configura la negociació amb el proxy. L’URL base també conserva el requisit de Retrofit d’acabar amb una barra inclinada. Una prova permesa contra una API pública sense autenticació de proxy pot prendre una adreça HTTP de la llista de proxys HTTP per a l’objecte Proxy separat.

Un proxy explícit d’OkHttp té prioritat sobre el seu ProxySelector. Fes-lo servir quan el client hagi de tenir un intermediari fix. Les aplicacions que necessitin encaminament segons la destinació haurien de dissenyar aquesta política mitjançant el selector admès.

Si la interfície de servei ja s’ha creat a partir d’una altra instància de Retrofit, construir aquesta instància nova no trasllada les peticions de la interfície antiga. Mantén el client configurat, la instància de Retrofit i l’objecte de servei en el mateix camí de construcció.

Per a un proxy autenticat, OkHttp exposa proxyAuthenticator per separat del autenticador de destinació. Configura’l al constructor d’OkHttp quan calgui i després passa el client complet a Retrofit. Per a un proxy amb autenticació Basic, fes servir una gestió limitada de reintents de proxyAuthenticator.

Articles relacionats