java代理服务器设置方法
在Java中使用proxy是通过设置java环境变量来实现的也就是JVM的系统属性。我们需要设置三个属性 proxySetproxyHost和proxyPort。proxySet是个boolean类型的可以设置为true或者false true代表使用代理服务器。 proxyHost是代理服务器的IP地址p roxy Po rt是代理服务器的端口地址。
我们有两种方法设置这种系统属性
一种是命令行下运行Java程序的时候通过参数付值
一种是在java源程序中设置。
第一种方法的格式如下java-DproxySet=true-DproxyHost=myProxyServer.come-DproxyPort=80MyJavaApp第二种方法就是直接在源程序中通过系统属性来写如下importjava.uti l .Properties;
. . .
. . .strProxy="221.15.5.67";strPort="8080";
PropertiessystemProperties=System.getProperties;systemProperties.setProperty;systemProperties.setProperty;
JDK1.3以上版本只要设置了proxyHost和proxyPort就不用写proxySet了。下面是一个完整的例子strUrl="http://blog.csdn.net/cqq/";
URLurl=newURL;
URLConnectionconn=url .openConnection;strProxy="221.15.5.67";strPort="8080";
PropertiessystemProperties=System.getProperties;systemProperties.setProperty;systemProperties.setProperty;
BufferedReaderrd=newBufferedReader));whi le) !=nul l)rd.close;
17.5.2使用ProxySel ector选择代理服务器
前面介绍的直接使用Proxy对象可以在打开U RLConnection或Socket时指定代理服务器使用这种方式需要每次打开连接都显式设置代理服务器。如果想让系统打开连接时总是具有默认的代理服务器则可以使用java.net.ProxySel ector它可以它根据不同的连接使用不同的代理服务器。
系统默认的ProxySelector会检测各种系统属性和URL协议然后决定怎样连接不同的主机。当然程序也可以调用ProxySelector类的setDefaultI()静态方法来设置默认代理服务器也可以调用getDefault()方法获得系统当
前默认的代理服务器。
程序可以通过System类来设置系统的代理服务器属性关于代理服务器常用的属性名有如下三个http.proxyHost设置HTTP访问所使用的代理服务器地址。该属性名的前缀可以改为https、 ftp等分别用于设置HTTP访问、安全HTTP访问和FTP访问所用的代理服务器地址。http.proxyPort设置HTTP访问所使用的代理服务器端口。该属性名的前缀可以改为https、 ftp等分别用于设置HTTP访问、安全HTTP访问和FTP访问所用的代理服务器端口。http.nonProxyHosts设置HTTP访问中不需要使用代理服务器的远程主机可以使用*通配符如果有多个地址多个地址用竖线 | 分隔。
下面程序示范了通过改变系统属性来改变默认的代理服务器。
程序清单 codes/17/17-5/ProxySelectorTest.java
上面程序中三行粗体字代码设置Java打开HTTP访问时的代理服务器属性其中前两行代码设置代理服务器的地址和端口第三行代码设置该代理HTTP访问哪些主机时不需要使用代理服务器。上面程序的①行代码处直接打开一个URLConnection但系统会为打开该URLConnection时使用代理服务器。
运行上面程序将会看到程序长时间等待 因为192.168.0.96通常并不是有效的代理服务器当然如果读者运行的机器恰好可以使用地址为
192.168.0.96的代理服务器又另当别论。
系统提供了默认的ProxySel ector子类作为代理选择器开发者可以实
现自己的代理选择器程序可以通过继承ProxySelector来实现自己的代理选择器。继承ProxySelector需要重写两个方法
List<Proxy>select(U RIuri) 实现该方法让代理选择器根据不同的URI来使用不同的代理服务器该方法就是代理选择器管理网络连接使用代理服务器的关键。connectFai led(URIuri,SocketAddresssa,IOExceptionioe) 当系统通过默认的代理服务器建立连接失败后代理选择器将会自动调用该方法。通过重写该方法可以对连接代理服务器失败的情形进行处理。
系统默认的代理服务器选择器也重写了connectFai led方法它重写该方法的处理策略是 当系统设置的代理服务器失败时默认代理选择器将会采用直连的方式连接远程资源所以当运行上面程序等待了足够长时间时程序依然可以打印出该远程资源的所有内容。
今天看到群里的老秦同学在布局自己的网站项目,这个同学还是比较奇怪的,他就喜欢用这些奇怪的域名。比如前几天看到有用.in域名,个人网站他用的.me域名不奇怪,这个还是常见的。今天看到他在做的一个范文网站的域名,居然用的是 .asia 后缀。问到其理由,是有不错好记的前缀。这里简单的搜索到.ASIA域名的新注册价格是有促销的,大约35元首年左右,续费大约是80元左右,这个成本算的话,比COM域名还贵。...
水墨云怎么样?本站黑名单idc,有被删除账号风险,建议转出及数据备份!水墨云ink cloud Service是成立于2017年的商家,自2020起开始从事香港、日本、韩国、美国等地区CN2 GIA线路的虚拟服务器租赁,同时还有台湾、国内nat vps相关业务,也有iplc专线产品,相对来说主打的是大带宽服务器产品。注意:本站黑名单IDC,有被删除账号风险,请尽量避免,如果已经购买建议转出及数据备...
我们在选择虚拟主机和云服务器的时候,是不是经常有看到有的线路是BGP线路,比如前几天有看到服务商有国际BGP线路和国内BGP线路。这个BGP线路和其他服务线路有什么不同呢?所谓的BGP线路机房,就是在不同的运营商之间通过技术手段时间各个网络的兼容速度最佳,但是IP地址还是一个。正常情况下,我们看到的某个服务商提供的IP地址,在电信和联通移动速度是不同的,有的电信速度不错,有的是移动速度好。但是如果...