JAVA 에서 자주 사용 하 는 프 록 시 설정

2829 단어
회사 가 인터넷 에 접속 하여 대리 체 제 를 실시 하기 때문에
최근 에는 웹 의 OpenApi 를 연구 하고 있다.
프 록 시 를 꼭 사용 해 야 할 방법 이 없습니다. 제 가 전에 httpclient 의 프 록 시 사용 방식 을 소개 한 글 이 있 습 니 다.
기본 자바 의 에이전트 사용 방식 을 소개 합 니 다.
가장 많이 사용 되 는 전역 설정 에이전트 입 니 다.
Properties prop = System.getProperties();   
       // HTTP   IP     
       prop.setProperty("http.proxyHost", "10.28.0.254");   
       // HTTP          
       prop.setProperty("http.proxyPort", "80");   
       //                    
       prop.setProperty("http.nonProxyHosts", "localhost|10.28.0.*");   
       //  HTTPS                  
       prop.setProperty("https.proxyHost", "10.28.0.254");   
       prop.setProperty("https.proxyPort", "443");   
//                http.nonProxyHosts   https.nonProxyHosts   
  
       //FTP          
       prop.setProperty("ftp.proxyHost", "192.168.0.254");   
       prop.setProperty("ftp.proxyPort", "2121");   
       prop.setProperty("ftp.nonProxyHosts", "localhost|192.168.0.*");   
       //SOCKS        
       prop.setProperty("socksProxyHost", "192.168.0.254");   
       prop.setProperty("socksProxyPort", "8000");  

때로는 에이전트 가 인증 을 해 야 할 때 계승 클래스 Authenticator 의 클래스 를 정의 해 야 합 니 다. 
public class MyAuthenticator extends Authenticator {   
     private String username = "";   
     private String password = "";   
     public MyAuthenticator(String username, String password) {   
         this.username = username;   
         this.password = password;   
     }   
     protected PasswordAuthentication getPasswordAuthentication() {   
         returnnew PasswordAuthentication(username, password.toCharArray());   
     }   
 }   
  
//                    
Authenticator.setDefault(new MyAuthenticator("userName", "Password"));  

물론 이 방법 은 대부분의 수 요 를 만족 시 킬 수 있 지만 한계 가 있다.
모든 연결 이 통 일 된 속성 을 통 해 프 록 시 설정 을 하 는 것 으로 특정 연결 에 대해 프 록 시 설정 을 할 수 없습니다.
JDK 5 및 그 이후 버 전에 서 새로운 프 록 시 설정 을 도입 하면 특정 연결 에 대한 설정 을 만족 시 킬 수 있 습 니 다.
URL url = new URL("http://www.shanhe114.com");   
       //          
       InetSocketAddress addr = new InetSocketAddress("10.28.0.4",   
               8080);   
       //Proxy proxy = new Proxy(Proxy.Type.SOCKS, addr); //SOCKS     
       Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); //HTTP     
       //       Proxy.Type     
       URLConnection conn = url.openConnection(proxy);   
       InputStream in = conn.getInputStream();   
       //InputStream in = url.openStream();   
       String content = IOUtils.toString(in);   
       System.out.println(content);  

좋은 웹페이지 즐겨찾기