2017-11-06 20 views
1

ProxySelector 클래스의 작동 방식을 이해하려고합니다. 나의 현재 코드는 다음과 같습니다 proxySelector.select(uri);를 호출 할 때이 해당 URI에 대한 프록시의 목록을 반환하는 가정입니다ProxySelector : 각 URL마다 다른 프록시

URI uri = new URI("http://google.com"); 
    proxySelector.select(uri); 

내가 이해. 그러나 각 URI에 대해 프록시를 설정하는 방법을 알지 못합니다.

나는 setDefault() 방법을 사용하여 기본 프록시를 설정할 수 있지만이 경우 시스템 전체의 프록시가 아닌 특정 URI의 프록시를 설정한다는 것을 알고 있습니다.

여기에 몇 가지 기본 사항이 누락되었지만 URL A (예 : http://google.com)와 URL B (예 : http://ebay.com)에 대해 다른 프록시를 설정 한 다음 시스템에 자동으로 올바른 프록시를 선택하게하는 방법 해당 URL에 연결할 때?

+0

참조 : https://stackoverflow.com/questions/34319679/using-proxy-with-httpcomponentsclienthttprequestfactory-for-resttemplate/34432952#34432952 –

+0

감사합니다. 그래서 기본적으로 "select"메소드에서 프록시가 선택되는 로직을 구현해야합니까? 실제로 System.setProperty()를 사용하여 프록시에 URL에 연결하는 방법은 무엇입니까? –

답변

2
  1. 오버라이드 바로 프록시 또는 URI에 대한 프록시 목록을 선택하는 사용자 정의 로직을 구현 ProxySelector.select(URI uri) 방법.

  2. 을 호출하여 ProxySelector을 시스템 전체로 설정합니다.

    URLConnection의 서브 클래스가 ProxySelector를 사용합니다, 예를 들면 : 당신이가는

    URLConnection conn = url.openConnection(); 
    
  3. 또는 구성 프레임 워크는 원격 URI, 예를 들어 스프링 RestTemplate를 호출하기 위해 사용하는 :

    HttpRoutePlanner routePlanner = new SystemDefaultRoutePlanner(new MyProxySelector()); 
    
    HttpComponentsClientHttpRequestFactory clientHttpRequestFactory 
        = new HttpComponentsClientHttpRequestFactory(
         HttpClientBuilder.create() 
          .setRoutePlanner(routePlanner) 
          .build()); 
    restTemplate = new RestTemplate(clientHttpRequestFactory); 
    

그것을 사용자 지정 논리가 적절한 프록시를 결정하지 못하는 경우 사용자 지정 select(URI uri)의 기본 ProxySelector로 폴백하는 것이 좋습니다. uri.

내 다른 답변은 ProxySelector example을 참조하십시오.

네트워크와 프록시 잘 Java Networking and Proxies (제 4의 ProxySelector) 및 ProxySelector Java docs 설명한다.

+0

이베이 API sdk와 함께 ProxySelector 클래스를 사용하려고합니다. 프록시를 설정하면 이베이에 대한 모든 호출이 프록시를 통해 라우트된다는 것을 보증 할 수 있습니까? –

+0

내 생각 엔 그렇습니다.하지만 ebay API에 대한 경험이 없습니다. http://developer.ebay.com/DevZone/javasdk-jaxb/docs/readme.htm#631에서 사용자 정의'ProxySelector'를 소개하는 제 의견을지지합니다. 다음 중 어느 것인가 (소스 코드 https://github.com/prestonvanloon/ebaysdkcore/blob/master/src/main/java/com/ebay/sdk/util/SdkProxySelector.java를 신뢰할 수있는 경우) 각 URL에 대해 단일 프록시. –