Apache HttpClient 5.5 comporte une voie de configuration SOCKS dans les paramètres de sockets du gestionnaire de connexions. Son exemple maintenu utilise setSocksProxyAddress :

InetSocketAddress socks =
    new InetSocketAddress("proxy.example.net", 1080);

PoolingHttpClientConnectionManager manager =
    PoolingHttpClientConnectionManagerBuilder.create()
        .setDefaultSocketConfig(
            SocketConfig.custom()
                .setSocksProxyAddress(socks)
                .build()
        )
        .build();

CloseableHttpClient client = HttpClients.custom()
    .setConnectionManager(manager)
    .build();

L'extrait utilise les paquets org.apache.hc d'HttpClient 5 et SocketConfig d'HttpCore. Les requêtes effectuées avec ce client utilisent le pool configuré ci-dessus. Fermez le client lorsque l'étendue de propriété de l'application se termine.

Placez l'URL réelle du site sur la requête comme d'habitude. Pour les requêtes autorisées vers des sites publics sans authentification de proxy, la liste de proxys SOCKS propose des adresses candidates ; choisissez une version de SOCKS prise en charge par l'environnement d'exécution réel. L'adresse SOCKS configure le transport utilisé pour l'atteindre ; ce n'est pas une route de proxy HTTP direct fournie comme HttpHost.

Ce sont les paramètres de sockets par défaut de ce gestionnaire. Une application qui utilise un résolveur SocketConfig par route doit plutôt appliquer le réglage SOCKS souhaité via cette politique. L'exemple conserve la politique DNS de destination normale du gestionnaire de connexions ; la résolution distante des noms exige une configuration vérifiée séparément.

Articles similaires