网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,主要问题就是出在对Authenticator.setDefault的使用,以及base64编码的问题上代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。
 
						
							
 网上也有一些文章但是大多数涉及带有授权验证的proxy都有问题,主要问题就是出在对Authenticator.setDefault的使用,以及base64编码的问题上代码是最没有二义性的文档,实现原理不再解释,请看代码去体会。
    ackage org.chimae.net;  
  import java.io.BufferedReader;  
  import java.io.IOException;  
  import java.io.InputStream;  
  import java.io.InputStreamReader;  
  import java.net.Authenticator;  
  import java.net.HttpURLConnection;  
  import java.net.PasswordAuthentication;  
  import java.net.URL;  
  /**  
  * @author chimae@cnjsp.org  
  */  
  ublic class ProxyConnTest {  
  ublic static void initProxy(String host, int port, final String username,  
  final String password) {  
  Authenticator.setDefault(new Authenticator() {  
  rotected PasswordAuthentication getPasswordAuthentication() {  
  return new PasswordAuthentication(username,  
  ew String(password).toCharArray());  
  }  
  });  
  System.setProperty(\"http.proxyType\", \"4\");  
  System.setProperty(\"http.proxyPort\", Integer.toString(port));  
  System.setProperty(\"http.proxyHost\", host);  
  System.setProperty(\"http.proxySet\", \"true\");  
  }  
  ublic static void main(String[] args) throws IOException {  
  String url = \"http://java.sun.com/\";  
  String proxy = \"yourProxy\";  
  int port =8080;  
  String username =\"username\";  
  String password =\"password\";  
  String curLine = \"\";  
  String content = \"\";  
  URL server = new URL(url);  
  initProxy(proxy,port,username,password);  
  HttpURLConnection connection = (HttpURLConnection)server.openConnection();  
  connection.connect();  
  InputStream is = connection.getInputStream();  
  BufferedReader reader = new BufferedReader(new InputStreamReader(is));  
  while ((curLine = reader.readLine()) != null) {  
  content += curLine;  
  }  
  System.out.println(\"content= \" + content);  
  is.close();  
  }  
  } 
查看本文来源