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.

Artigos relacionados