Configurar um proxy Retrofit via OkHttpClient
Passe um OkHttpClient configurado ao Retrofit, mantendo o URL base da API apontado para o serviço de destino.
Configure o proxy de encaminhamento no OkHttp e depois passe esse mesmo cliente ao 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 trecho constrói a camada de transporte e a instância Retrofit. Antes de build, adicione a este builder as fábricas de conversores e adaptadores de chamadas exigidas pela aplicação e depois crie a interface de serviço a partir desta instância.
Mantenha baseUrl apontado para o serviço de API real. Se colocar ali o URL do proxy, você altera o destino HTTP; isso não configura a negociação com o proxy. O URL base também preserva o requisito do Retrofit de barra final. Um teste permitido numa API pública sem autenticação de proxy pode usar um endereço HTTP da lista de proxies HTTP para o objeto Proxy separado.
Um proxy explícito do OkHttp tem precedência sobre o seu ProxySelector. Use isso quando o cliente deve ter um intermediário fixo. Aplicações que precisam de roteamento dependente do destino devem projetar essa política pelo seletor suportado.
Se a interface de serviço já foi criada a partir de outra instância Retrofit, construir esta nova instância não move as requisições da interface antiga. Mantenha o cliente configurado, a instância Retrofit e o objeto de serviço no mesmo caminho de construção.
Para um proxy autenticado, o OkHttp expõe o proxyAuthenticator separadamente do autenticador de destino. Configure-o no builder do OkHttp quando necessário e depois passe o cliente completo ao Retrofit. Para um proxy com autenticação Basic, use tratamento limitado de novas tentativas do proxyAuthenticator.