当前位置:天才代写 > tutorial > JAVA 教程 > 如何编写可通过署剖析见因特网上的Web处事器的Java应用措施

如何编写可通过署剖析见因特网上的Web处事器的Java应用措施

2017-11-11 08:00 星期六 所属: JAVA 教程 浏览:714

本能力将向您报告如何编写可通过署剖析见因特网上的Web处事器的Java应用措施。在Java应用措施中插手署理支持只需特别编写几行代码,且不依赖任何安详性“裂痕”。

险些所有的公司都十分存眷掩护本身的内部网络,以防黑客及入窃者。一种常见的安详法子是完全断开与因特网的毗连。假如黑客们不能毗连到您的任何一台呆板,他们就不能犯科进入您的系统。这种计策发生的倒霉副浸染是,内部用户无法会见外部的因特网处事器,如Yahoo或JavaWorld。为了办理这一问题,网络打点员凡是安装“署理处事器”。实际上,署理是安装于因特网和内部网之间的一种处事,用来打点这两个规模之间的毗连。署理有助于淘汰安详性的外部威胁,同时还答允内部用户会见因特网处事。尽量Java使得编写因特网客户机不再坚苦,可是假如客户机不能通过署理,则它们毫无用处。幸运的是,Java使得利用署理支持不再坚苦–假如您知道密诀,这就是事实。

将Java和署理团结起来的法门即在Java运行时激活特定的系统属性。这些属性未被写入正式文件,只是作为Java传说的一部门在Java编程人员中秘传。为了支持署理,Java应用措施不只需要指定署理自己的信息,并且需要指定用于认证的用户信息。在开始利用网际协议之前,您需要在措施中添加以下几行代码:

System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost","myProxyMachineName");
System.getProperties().put("proxyPort","85");

上面的第一行通知Java您要通过署理举办毗连,第二行指定署理地址的呆板,第三行指定署理监听的端口。有些署理在授权用户会见因特网之前,要求用户输入用户名和口令。假如您利用位于防火墙之内的Web欣赏器,您就大概遇到过这种环境。以下是执行认证的要领:

URLConnectionconnection=url.openConnection();
Stringpassword="username:password";
StringencodedPassword=base64Encode(password);
connection.setRequestProperty("Proxy-Authorization",encodedPassword);

这段代码的思想是,您必需调解HTTP标头以发出用户信息。这是通过挪用setRequestProperty()来实现的。这种要领答允您在发出请求之前处理惩罚HTTP标头。HTTP要求用base64对用户名和口令举办编码。幸运的是,有一组公用域API,它们将代您执行编码(请参阅参考资源部门)。

如您所见,在Java应用措施中插手署理支持并不需要做几多事情。有了此刻的常识,再做一点研究(您必需查明您的署理是如那里理惩罚您感乐趣的协议以及如何举办用户认证的),您就能用其他协议实现署理。

FTP署理

ScottD.Taylor提出这个法门来处理惩罚FTP协议署理:

defaultProperties.put("ftpProxySet","true");
defaultProperties.put("ftpProxyHost","proxy-host-name");
defaultProperties.put("ftpProxyPort","85");

接下来您便可以通过以下代码利用"ftp"协议会见文件URL:

URLurl=newURL("ftp://ftp.netscape.com/pub/navigator/3.04/windows/readme.txt");

假如有人有利用其他网际协议署理的例子,我很想看看。

留意:代码示例(Example.java)仅在JDK1.1.4下测试过。

后续能力!

对付仍在利用JDK1.1.7(共同WebSphere3.0)的开拓人员而言,将proxyHost和proxyPort设为系统属性不起浸染;conn.getInputStream()可能返回毗连超时,可能是找不到主机路径。可是,我利用接管Host和Port为参数的URL结构函数办理了这一问题(利用我的署理主机和端口):

publicURL(Stringprotocol,Stringhost,intport,Stringfile).

借助用户名和口令举办认证的要领不起浸染。应将"Basic"置于认证字符串的开头;譬喻:

StringencodedPassword=base64Encode(password);

应该是:

StringencodedPassword="Basic"+base64Encode(password);

您也不必用一个单独的措施来举办64位编码。您可以利用sun.misc.BASE64Encoder()类。下面是完成这两处窜改之后的代码:

System.getProperties().put("proxySet","true");
System.getProperties().put("proxyHost",proxyHost);
System.getProperties().put("proxyPort",proxyPort);
StringauthString="userid:password";
Stringauth="Basic"+newsun.misc.BASE64Encoder
().encode(authString.getBytes());
URLurl=newURL("http://java.sun.com/");
URLConnectionconn=url.openConnection();
conn.setRequestProperty("Proxy-Authorization",auth);

下面是利用socks4署理处事器的要领:

#p#分页标题#e#

System.getProperty("socksProxySet",true);
System.getProperty("socksProxyHost",proxyHostName);
System.getProperty("socksProxyPort",proxyPort);
UsuallytheproxyPortforSocks4isport1080

接下来您就可以用Socks4举办毗连了。

 

    关键字:

天才代写-代写联系方式