博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java设置代理的几种方式
阅读量:7080 次
发布时间:2019-06-28

本文共 2432 字,大约阅读时间需要 8 分钟。

  hot3.png

有些时候我们的网络不能直接连接到外网, 需要使用http或是https或是socket代理来连接到外网, 这里是使用代理连接到外网的一些方法.

   方法一 :使用系统属性来完成代理设置, 这种方法比较简单, 但是不能对单独的连接来设置代理:   

public static void main(String[] args) {           Properties prop = System.getProperties();           // 设置http访问要使用的代理服务器的地址           prop.setProperty("http.proxyHost", "192.168.0.254");           // 设置http访问要使用的代理服务器的端口           prop.setProperty("http.proxyPort", "8080");           // 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔           prop.setProperty("http.nonProxyHosts", "localhost|192.168.0.*");           // 设置安全访问使用的代理服务器地址与端口           // 它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问           prop.setProperty("https.proxyHost", "192.168.0.254");           prop.setProperty("https.proxyPort", "443");           // 使用ftp代理服务器的主机、端口以及不需要使用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.setDefault(new MyAuthenticator("userName", "Password"));}    static class MyAuthenticator extends Authenticator {           private String user = "";           private String password = "";           public MyAuthenticator(String user, String password) {                  this.user = user;                  this.password = password;           }           protected PasswordAuthentication getPasswordAuthentication() {                  returnnew PasswordAuthentication(user, password.toCharArray());           }    }

方法二使用Proxy来对每个连接实现代理, 这种方法只能在jdk 1.5以上的版本使用(包含jdk1.5), 优点是可以单独的设置每个连接的代理, 缺点是设置比较麻烦:

public static void main(String[] args) {          try {               URL url = new URL("http://www.baidu.com");               // 创建代理服务器               InetSocketAddress addr = new InetSocketAddress("192.168.0.254",8080);               Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理               // 如果我们知道代理server的名字, 可以直接使用             URLConnection conn = url.openConnection(proxy);               InputStream in = conn.getInputStream();     String s = IOUtils.toString(in);               System.out.println(s);        } catch (Exception e) {               e.printStackTrace();        }    }

 

转载于:https://my.oschina.net/mifans/blog/795212

你可能感兴趣的文章
Gulp-livereload:实时刷新编码
查看>>
UIView
查看>>
SpringMVC结合REST
查看>>
2017.07 数字货币--区块链常识
查看>>
input输入框禁止显示历史记录
查看>>
JAVA并发,CyclicBarrier
查看>>
LeetCode 638: Shopping Offers
查看>>
ubuntu mysql workbench
查看>>
poj3164 (朱刘算法 最小树形图)
查看>>
javascript中的作用域
查看>>
vs2015智能提示英文改为中文
查看>>
synchronized(){}同步代码块笔记(新手笔记,欢迎纠正)
查看>>
Shell基础
查看>>
JavaSe实现List存对象类型并增删改查
查看>>
hdu Problem 2063 过山车
查看>>
C++11新利器
查看>>
vSphere 安装操作系统
查看>>
c++由string组成的struct初始化崩溃
查看>>
ArrayList与LindedList区别
查看>>
Javascript中最常用的经典技巧
查看>>