博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
如何设置代理访问链接地址
阅读量:5935 次
发布时间:2019-06-19

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

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

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.SOCKS, addr); // Socket 代理Proxy proxy = new Proxy(Proxy.Type.HTTP, addr); // http 代理// 如果我们知道代理server的名字, 可以直接使用// 结束URLConnection conn = url.openConnection(proxy);InputStream in = conn.getInputStream();// InputStream in = url.openStream();String s = IOUtils.toString(in);System.out.println(s);} catch (Exception e) {e.printStackTrace();}}针对以上网络上的资源,自己总结了一下程序:public class ProxyClient {// 代理地址private static String proxyHost = "10.2.13.60";// 代理端口private static int proxyPort = 808;// 代理用户名private static String proxyUser = "cpst";// 代理密码private static String proxyPass = "cpst";// 访问网络资源private static String urlStr = "http://www.163.com";public static void proxyOne() {try {// 指定代理服务器地址和端口InetSocketAddress isa = new InetSocketAddress(proxyHost, proxyPort);// 创建代理Proxy proxy = new Proxy(Proxy.Type.HTTP, isa);// 设置登陆到代理服务器的用户名和密码Authenticator.setDefault(new MyAuthenticator(proxyUser, proxyPass));// 创建访问网络URLURL url = new URL(urlStr);// 通过代理服务器访问URLConnection uc = url.openConnection(proxy);// 返回字节流InputStream is = uc.getInputStream();// 打印返回结果int c;while ((c = is.read()) != -1) {System.out.print((char) c);}// 关闭返回字节流is.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void proxyTwo() {// 取得系统属性Properties prop = System.getProperties();// 设置http访问要使用的代理服务器的地址prop.setProperty("http.proxyHost", proxyHost);// 设置http访问要使用的代理服务器的端口prop.setProperty("http.proxyPort", String.valueOf(proxyPort));// 设置登陆到代理服务器的用户名和密码Authenticator.setDefault(new MyAuthenticator(proxyUser, proxyPass));try {// 创建访问网络URLURL url = new URL(urlStr);// 打开连接URLConnection uc = url.openConnection();// 返回字节流InputStream is = uc.getInputStream();// 打印返回结果int c;while ((c = is.read()) != -1) {System.out.print((char) c);}// 关闭返回字节流is.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}public static void proxyThree() {// 取得系统属性Properties prop = System.getProperties();// 设置http访问要使用的代理服务器的地址prop.setProperty("http.proxyHost", proxyHost);// 设置http访问要使用的代理服务器的端口prop.setProperty("http.proxyPort", String.valueOf(proxyPort));try {// 创建访问网络URLURL url = new URL(urlStr);// 代理用户名密码String authString = proxyUser + ":" + proxyPass;// 注意前面的BasicString auth = "Basic"+ new BASE64Encoder().encode(authString.getBytes());// 打开连接URLConnection conn = url.openConnection();// 设置用户名密码认证conn.setRequestProperty("Proxy-Authorization", auth);// 返回字节流InputStream is = conn.getInputStream();// 打印返回结果int c;while ((c = is.read()) != -1) {System.out.print((char) c);}// 关闭返回字节流is.close();} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}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());}}}

 

本文转自邴越博客园博客,原文链接:http://www.cnblogs.com/binyue/p/4181689.html,如需转载请自行联系原作者

你可能感兴趣的文章
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Web service (一) 原理和项目开发实战
查看>>
跑带宽度多少合适_跑步机选购跑带要多宽,你的身体早就告诉你了
查看>>
广平县北方计算机第一届PS设计大赛
查看>>
深入理解Java的接口和抽象类
查看>>
java与xml
查看>>
Javascript异步数据的同步处理方法
查看>>
快速排序——Java
查看>>
iis6 zencart1.39 伪静态规则
查看>>
SQL Server代理(3/12):代理警报和操作员
查看>>