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.

Artigos relacionados