[java] HttpClient에서 Proxy를 사용하는 방법은?
  1. HttpClient 인스턴스 생성
    HttpClient httpClient = HttpClient.newBuilder()
         .proxy(ProxySelector.getDefault())
         .build();
    
  2. HttpRequest 생성
    HttpRequest request = HttpRequest.newBuilder()
         .uri(URI.create("https://example.com"))
         .build();
    
  3. 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 메소드에서 필요한 로직을 작성하시면 됩니다.