Apache HttpClient 5.5의 연결 관리자 SOCKS 설정
HTTP 프록시 경로나 사용자 정의 소켓 팩토리 대신 SocketConfig로 풀의 소켓 정책을 구성합니다.
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();
이 조각은 HttpClient 5의 org.apache.hc 패키지와 HttpCore의 SocketConfig을 사용합니다. 이 클라이언트로 만든 요청은 위에서 구성한 풀을 사용합니다. 애플리케이션의 소유 범위가 끝나면 클라이언트를 닫으십시오.
실제 웹사이트 URL은 평소처럼 요청에 지정합니다. 프록시 인증이 없는 허용된 공개 사이트 요청에는 SOCKS 프록시 목록이 후보 주소를 제공합니다. 실제 런타임이 지원하는 SOCKS 버전을 선택하십시오. SOCKS 주소는 그곳에 도달하는 데 쓰이는 전송을 구성하는 것이며, HttpHost로 제공되는 HTTP 포워드 프록시 경로가 아닙니다.
이는 이 관리자의 기본 소켓 설정입니다. 경로별 SocketConfig 리졸버를 사용하는 애플리케이션은 대신 해당 정책을 통해 원하는 SOCKS 설정을 적용해야 합니다. 예제는 연결 관리자의 일반 대상 DNS 정책을 유지합니다. 원격 이름 확인에는 별도로 검증된 구성이 필요합니다.