Configura el proxy de reenvío en OkHttp y luego pasa ese mismo cliente 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();

El fragmento construye la capa de transporte y la instancia de Retrofit. Antes de llamar a build, añade a este constructor las fábricas de convertidores y adaptadores de llamadas que necesite la aplicación y después crea la interfaz de servicio a partir de esta instancia.

Mantén baseUrl apuntando al servicio de API real. Si pones ahí la URL del proxy, cambias el destino HTTP; eso no configura la negociación con el proxy. La URL base también conserva el requisito de Retrofit de terminar en barra. Una prueba permitida contra una API pública sin autenticación de proxy puede tomar una dirección HTTP de la lista de proxies HTTP para el objeto Proxy independiente.

Un proxy explícito de OkHttp tiene prioridad sobre su ProxySelector. Úsalo cuando el cliente deba tener un intermediario fijo. Las aplicaciones que necesiten enrutamiento según el destino deberían diseñar esa política mediante el selector admitido.

Si la interfaz de servicio ya se creó a partir de otra instancia de Retrofit, construir esta nueva instancia no mueve las peticiones de la interfaz anterior. Mantén el cliente configurado, la instancia de Retrofit y el objeto de servicio en la misma ruta de construcción.

Para un proxy autenticado, OkHttp expone proxyAuthenticator por separado de su autenticador de destino. Configúralo en el constructor de OkHttp cuando haga falta y luego pasa el cliente completo a Retrofit. Para un proxy con autenticación Basic, usa gestión limitada de reintentos de proxyAuthenticator.

Artículos relacionados