



全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在Java中,使用proxy是通过设置java环境变量来实现的,也就是JVM的系统属性。我们需要设置三个属性,proxySetproxyHost和proxyPxySet是个boolean类型的,可以设置为true或者false,true代表使用代理服务器。proxyHost是代理服务器的IP地址proxyPort是代理服务器的端口地址。我们有两种方法设置这种系统属性,一种是命令行下运行Java程序的时候,通过参数付值一种是在java源程序中设置。第一种方法的格式如下:java-DproxySet=true-DproxyHost=myProxySe-DproxyPort=80MyJavaApp第二种方法,就是直接在源程序中通过系统属性来写,如下:importjava.util.Properties;.strProxy=7;strPort=8080;PropertiessystemProperties=System.getProperties;systemProperties.setProperty;systemProperties.setProperty;JDK1.3以上版本,只要设置了proxyHost和proxyPort就不用写proxySet了。下面是一个完整的例子:strUrl=/cqq/;URLurl=newURL;URLConnectionconn=url.openConnection;strProxy=7;strPort=8080;PropertiessystemProperties=System.getProperties;systemProperties.setProperty;systemProperties.setProperty;BufferedReaderrd=newBufferedReader);while)!=null)rd.close;17.5.2 使用ProxySelector选择代理服务器前面介绍的直接使用Proxy对象可以在打开URLConnection或Socket时指定代理服务器,使用这种方式需要每次打开连接都显式设置代理服务器。如果想让系统打开连接时总是具有默认的代理服务器,则可以使用.ProxySelector,它可以它根据不同的连接使用不同的代理服务器。系统默认的ProxySelector会检测各种系统属性和URL协议,然后决定怎样连接不同的主机。当然,程序也可以调用ProxySelector类的setDefaultI()静态方法来设置默认代理服务器,也可以调用getDefault()方法获得系统当前默认的代理服务器。程序可以通过System类来设置系统的代理服务器属性,关于代理服务器常用的属性名有如下三个:xyHost:设置HTTP访问所使用的代理服务器地址。该属性名的前缀可以改为https、ftp等,分别用于设置HTTP访问、安全HTTP访问和FTP访问所用的代理服务器地址。xyPort:设置HTTP访问所使用的代理服务器端口。该属性名的前缀可以改为https、ftp等,分别用于设置HTTP访问、安全HTTP访问和FTP访问所用的代理服务器端口。http.nonProxyHosts:设置HTTP访问中不需要使用代理服务器的远程主机,可以使用*通配符,如果有多个地址,多个地址用竖线(|)分隔。下面程序示范了通过改变系统属性来改变默认的代理服务器。程序清单:codes/17/17-5/ ProxySelectorTest.javapublic class ProxySelectorTest/测试本地JVM的网络默认配置public void setLocalProxy()Properties prop = System.getProperties();/设置HTTP访问要使用的代理服务器的地址prop.setProperty(xyHost, 6);/设置HTTP访问要使用的代理服务器的端口prop.setProperty(xyPort, 8080);/设置HTTP访问不需要通过代理服务器访问的主机,/可以使用*通配符,多个地址用|分隔prop.setProperty(http.nonProxyHosts, localhost|10.20.*);/设置安全HTTP访问使用的代理服务器地址与端口/它没有https.nonProxyHosts属性,它按照http.nonProxyHosts 中设置的规则访问prop.setProperty(xyHost, 6);prop.setProperty(xyPort, 443);/设置FTP访问的代理服务器的主机、端口以及不需要使用代理服务器的主机prop.setProperty(xyHost, 6);prop.setProperty(xyPort, 2121);prop.setProperty(ftp.nonProxyHosts, localhost|10.10.*);/设置socks代理服务器的地址与端口prop.setProperty(socks.ProxyHost, 6);prop.setProperty(socks.ProxyPort, 1080);/清除proxy设置public void removeLocalProxy()Properties prop = System.getProperties();/清除HTTP访问的代理服务器设置prop.remove(xyHost);prop.remove(xyPort);prop.remove(http.nonProxyHosts);/清除HTTPS访问的代理服务器设置prop.remove(xyHost);prop.remove(xyPort);/清除FTP访问的代理服务器设置prop.remove(xyHost);prop.remove(xyPort);prop.remove(ftp.nonProxyHosts);/清除SOCKS的代理服务器设置prop.remove(socksProxyHost);prop.remove(socksProxyPort);/测试HTTP访问public void showHttpProxy()throws MalformedURLException , IOExceptionURL url = new URL();/直接打开连接,但系统会调用刚设置的HTTP代理服务器URLConnection conn = url.openConnection(); /Scanner scan = new Scanner(conn.getInputStream();/读取远程主机的内容while(scan.hasNextLine()System.out.println(scan.nextLine();public static void main(String args)throws IOExceptionProxySelectorTest test = new ProxySelectorTest();test.setLocalProxy();test.showHttpProxy();test.removeLocalProxy();上面程序中三行粗体字代码设置Java打开HTTP访问时的代理服务器属性,其中前两行代码设置代理服务器的地址和端口,第三行代码设置该代理HTTP访问哪些主机时不需要使用代理服务器。上面程序的行代码处直接打开一个URLConnection,但系统会为打开该URLConnection时使用代理服务器。运行上面程序,将会看到程序长时间等待,因为6通常并不是有效的代理服务器(当然,如果读者运行的机器恰好可以使用地址为6的代理服务器又另当别论)。系统提供了默认的ProxySelector子类作为代理选择器,开发者可以实现自己的代理选择器,程序可以通过继承ProxySelector来实现自己的代理选择器。继承ProxySelector需要重写两个方法:List select(URI uri):实现该方法让代理选择器根据不同的URI来使用不同的代理服务器,该方法就是代理选择器管理网络连接使用代理服务器的关键。connectFailed(URI uri, SocketAddress sa, IOExcept
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 影视道具租赁仓储与道具租赁合同解除合同
- 专利商标续展一体化代理合同
- 高效物流托运补充服务协议
- 电竞俱乐部战队比赛奖金分配与管理协议
- 高效生物转化项目合伙人权益保护协议
- 公司管理调查报告
- 入职培训会流程
- 政薪火相传的传统美德 课件+-2024-2025学年统编版道德与法治七年级下册
- 药事管理促进合理用药
- 安全我知道活动目标
- (4.3.1)-3.3我国储粮生态区的分布
- GB/T 19929-2005土方机械履带式机器制动系统的性能要求和试验方法
- 企业公司早会晨会年会团建小游戏“看图猜电影电视名”互动游戏
- 110~750kV架空输电线路设计规范方案
- 项目部职责牌
- 车辆采购、维修服务投标方案
- 药剂科病房麻醉药品精神药品处方流程
- 营销策划模版课件
- 智慧楼宇设计方案.pdf
- 外架悬挑防护棚施工方案完整
- 以天然气制合成气的工艺
评论
0/150
提交评论