Configura un proxy de Retrofit mediante OkHttpClient
Pasa un OkHttpClient configurado a Retrofit mantendo o URL base da API apuntando ao servizo de destino.
Configura o proxy de reenvío en OkHttp e despois pasa ese mesmo 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();
O fragmento constrúe a capa de transporte e a instancia de Retrofit. Antes de chamar build, engade a este construtor as fábricas de convertidores e adaptadores de chamadas que necesite a aplicación e despois crea a interface de servizo a partir desta instancia.
Mantén baseUrl apuntando ao servizo de API real. Se colocas alí o URL do proxy, cambias o destino HTTP; iso non configura a negociación co proxy. O URL base tamén conserva o requisito de Retrofit de rematar en barra. Unha proba permitida contra unha API pública sen autenticación de proxy pode tomar un enderezo HTTP da lista de proxys HTTP para o obxecto Proxy separado.
Un proxy explícito de OkHttp ten prioridade sobre o seu ProxySelector. Úsao cando o cliente deba ter un intermediario fixo. As aplicacións que necesiten enrutamento segundo o destino deberían deseñar esa política mediante o selector admitido.
Se a interface de servizo xa se creou a partir doutra instancia de Retrofit, construír esta nova instancia non move as peticións da interface anterior. Mantén o cliente configurado, a instancia de Retrofit e o obxecto de servizo na mesma ruta de construción.
Para un proxy autenticado, OkHttp expón proxyAuthenticator por separado do seu autenticador de destino. Configúrao no construtor de OkHttp cando faga falta e despois pasa o cliente completo a Retrofit. Para un proxy con autenticación Basic, usa xestión limitada de reintentos de proxyAuthenticator.