this is a extra element for clear the floated element
Java程序如何穿透带有密码验证的代理
  • 12/31
  • 2008
J2ee核心 | Java 1474 次查看
  网上也有一些文章但是大多数涉及带有授权验证的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();

  }

  }