首页 | 互联网 | IT动态 | IT培训 | Cisco | Windows | Linux | Java | .Net | Oracle | 软件测试 | C/C++ | 嵌入式开发 | 存储世界 | 服务器
网络设备 | IDC | 安全 | 求职招聘 | 数字网校 | 笔记本电脑 | 北大青鸟 | 技术专题 | 电子书下载 | 教学视频 | 源码下载 | 搜索 | 博客 | 论坛
中国IT实验室Linux频道
中国IT教育
Google
首页 资讯动态 认证考试 新手入门 核心技术 高级技术 J2EE J2ME Java&XML 开源技术 其他技术 RSS订阅 论坛 专题
您现在的位置: 中国IT实验室 >> Java >> J2EE >> 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 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();
  
  }
  
  }
【责编:admin】

中国IT教育

相关产品和培训
文章评论
 友情推荐链接
 认证培训
 专题推荐

 ·Oracle外键及外键约束修改行为
 ·开源软件测试工具学习专题
 ·JSP Web开发 入门基础到高手进阶教程
 ·JavaFX—是Java桌面的新希望么?
 ·安全至上 .NET开发安全策略
 ·测试用例设计之道-测试用例学习专题
 ·面向Java开发人员的Scala指南
 ·Java设计模式之实例详解
 ·Oracle数据库11g 面向DBA和开发人员的重要新特性
 ·桌面应用软件编程 J2SE技术详解
 今日更新
 社区讨论
 博客论点
 频道精选
 Java 频道导航