Налаштування SOCKS в Apache HttpClient 5.5 на менеджері з'єднань
Налаштуйте політику сокетів пулу за допомогою SocketConfig замість маршруту HTTP-проксі або власної фабрики сокетів.
Apache HttpClient 5.5 містить шлях налаштування SOCKS у параметрах сокетів менеджера з'єднань. Його підтримуваний приклад використовує 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();
Фрагмент використовує пакети org.apache.hc з HttpClient 5 і SocketConfig з HttpCore. Запити, зроблені цим клієнтом, використовують пул, налаштований вище. Закрийте клієнт, коли область володіння застосунку завершується.
Розмістіть фактичну URL-адресу сайту в запиті як зазвичай. Для дозволених запитів до публічних сайтів без автентифікації проксі список SOCKS-проксі пропонує адреси-кандидати; виберіть версію SOCKS, яку підтримує фактичне середовище виконання. Адреса SOCKS налаштовує транспорт, що використовується для доступу до неї; це не маршрут переспрямовуючого HTTP-проксі, переданий як HttpHost.
Це типові параметри сокетів для цього менеджера. Застосунок, що використовує розпізнавач SocketConfig для кожного маршруту, має застосовувати потрібне налаштування SOCKS через цю політику. Приклад зберігає звичайну політику DNS призначення менеджера з'єднань; віддалене розв'язання імен потребує окремо перевіреної конфігурації.