分享java中设置代理的两种方式
程序员文章站
2024-03-08 14:20:00
1 前言
有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http、https、ftp、socks代理。比如在ie浏览器设置代理。
那我们在我们的j...
1 前言
有时候我们的程序中要提供可以使用代理访问网络,代理的方式包括http、https、ftp、socks代理。比如在ie浏览器设置代理。
那我们在我们的java程序中使用代理呢,有如下两种方式。直接上代码.
2 采用设置系统属性
import java.net.authenticator; import java.net.passwordauthentication; import java.util.properties; public class proxydemo1 { public static void main(string[] args) { properties prop = system.getproperties(); // 设置http访问要使用的代理服务器的地址 prop.setproperty("http.proxyhost", "183.45.78.31"); // 设置http访问要使用的代理服务器的端口 prop.setproperty("http.proxyport", "8080"); // 设置不需要通过代理服务器访问的主机,可以使用*通配符,多个地址用|分隔 prop.setproperty("http.nonproxyhosts", "localhost|192.168.0.*"); // 设置安全访问使用的代理服务器地址与端口 // 它没有https.nonproxyhosts属性,它按照http.nonproxyhosts 中设置的规则访问 prop.setproperty("https.proxyhost", "183.45.78.31"); prop.setproperty("https.proxyport", "443"); // 使用ftp代理服务器的主机、端口以及不需要使用ftp代理服务器的主机 prop.setproperty("ftp.proxyhost", "183.45.78.31"); prop.setproperty("ftp.proxyport", "21"); prop.setproperty("ftp.nonproxyhosts", "localhost|192.168.0.*"); // socks代理服务器的地址与端口 prop.setproperty("socksproxyhost", "183.45.78.31"); prop.setproperty("socksproxyport", "1080"); // 设置登陆到代理服务器的用户名和密码 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() { return new passwordauthentication(user, password.tochararray()); } } }
3 使用proxy
import java.io.bufferedreader; import java.io.inputstreamreader; import java.net.authenticator; import java.net.httpurlconnection; import java.net.inetsocketaddress; import java.net.passwordauthentication; import java.net.proxy; import java.net.url; public class proxydemo2 { public static void main(string[] args) throws exception { url url = new url("http://www.3lai8.com"); // /创建代理服务器 inetsocketaddress addr = new inetsocketaddress("192.168.0.254", 8080); // proxy proxy = new proxy(proxy.type.socks, addr); // socket 代理 proxy proxy = new proxy(proxy.type.http, addr); // http 代理 authenticator.setdefault(new myauthenticator("username", "password"));// 设置代理的用户和密码 httpurlconnection connection = (httpurlconnection) url.openconnection(proxy);// 设置代理访问 inputstreamreader in = new inputstreamreader(connection.getinputstream()); bufferedreader reader = new bufferedreader(in); while (true) { string s = reader.readline(); if (s != null) { system.out.println(s); } } } 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() { return new passwordauthentication(user, password.tochararray()); } } }
4 总结
ok,就这么的简单,搞定,用第一种方式是一种全局的代理,用第种方式可以针对具体的哪一个使用代理。知道了这些我们就可以做我们想做的事情了哦!
上一篇: JAVA实现读取txt文件内容的方法