[java] HttpClient에서 Proxy를 사용하는 방법은?
- HttpClient 인스턴스 생성
HttpClient httpClient = HttpClient.newBuilder() .proxy(ProxySelector.getDefault()) .build();
- HttpRequest 생성
HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://example.com")) .build();
- HttpClient를 이용하여 요청 보내기
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
기본적으로 HttpClient는 시스템의 기본 Proxy를 사용하도록 설정되어 있습니다. 따라서 위의 코드에서는 proxy(ProxySelector.getDefault())
를 통해 기본 Proxy를 사용하도록 설정하였습니다.
만약 특정한 프록시 서버를 사용하고 싶다면 ProxySelector
를 직접 구현하여 원하는 Proxy를 설정할 수 있습니다. 예를 들어, 다음과 같이 FixedProxySelector
를 구현하여 특정 프록시 서버를 사용하도록 할 수 있습니다.
ProxySelector proxySelector = new ProxySelector() {
@Override
public List<Proxy> select(URI uri) {
return Collections.singletonList(new Proxy(Proxy.Type.HTTP, new InetSocketAddress("proxy.example.com", 8080)));
}
@Override
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {
// handle failure
}
};
HttpClient httpClient = HttpClient.newBuilder()
.proxy(proxySelector)
.build();
위의 코드에서는 proxy.example.com
의 포트 8080
으로 HTTP 프록시를 설정하고 있습니다. 여러 개의 프록시 서버를 사용하고 싶다면 select
메소드에서 필요한 로직을 작성하시면 됩니다.