当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>J2EE

Java程序如何穿透带有密码验证的代理


  网上也有一些文章但是大多数涉及带有授权验证的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 [email protected]
  
  */
  
  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();
  
  }
  
  }
相关内容
赞助商链接