Numa aplicação Apache HttpClient 4, um destino HTTPS não significa que todas as ligações comecem com TLS. Chega-se a um proxy HTTP comum através de uma ligação sem encriptação antes de CONNECT abrir o túnel e o TLS ser sobreposto em direção ao destino.

Se um gestor de ligações personalizado registar apenas https, o primeiro salto pelo proxy pode falhar com UnsupportedSchemeException: http protocol is not supported.

Para a API 4.5, inclua ambas as fábricas ao construir esse gestor:

var registry = RegistryBuilder.<ConnectionSocketFactory>create()
    .register("http", PlainConnectionSocketFactory.getSocketFactory())
    .register("https", tlsFactory)
    .build();

var manager = new PoolingHttpClientConnectionManager(registry);
var client = HttpClients.custom()
    .setConnectionManager(manager)
    .setProxy(new HttpHost("proxy.example.net", 8080, "http"))
    .build();

tlsFactory é o SSLConnectionSocketFactory existente da aplicação, com a verificação de confiança e de nome de anfitrião prevista. Os tipos mostrados pertencem aos pacotes org.apache.http do Apache 4. O fragmento pressupõe a inferência de tipos de variáveis locais do Java; código Java mais antigo pode usar tipos explícitos.

Ligue o gestor corrigido ao cliente realmente utilizado para o pedido. Para um pedido HTTPS público permitido sem autenticação de proxy, uma entrada HTTP da lista de proxies HTTP pode preencher o endereço de proxy do HttpHost. Configurar outro builder não atualiza um cliente já construído.

Verifique também a propriedade do builder: o HttpClientBuilder documenta que um gestor de ligações fornecido explicitamente pode sobrepor as suas entradas separadas de configuração SSL. Coloque as fábricas necessárias no registro do gestor em vez de assumir que uma chamada posterior a setSSLContext substituirá o seu interior.

Este diagnóstico diz respeito ao registro local de esquemas. Um desafio de autenticação de proxy ou um destino negado é um resultado posterior e diferente. Mantenha os dois registos de fábricas enquanto investiga essas respostas.

Artigos relacionados