六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

用Java編寫通過代理訪問的應用程序

[摘要]本技巧將向您講述如何編寫可通過代理訪問因特網上的Web服務器的Java應用程序。在Java應用程序中加入代理支持只需額外編寫幾行代碼,且不依賴任何安全性“漏洞”�! 缀跛械墓径际株P注保護自己的內部網絡,以防黑客及入竊者。一種常見的安全措施是完全斷開與因特網的連接。如果黑客們不能連接到您的任...
  本技巧將向您講述如何編寫可通過代理訪問因特網上的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代理服務器的方法:

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

  接下來您就可以用Socks4進行連接了。



主站蜘蛛池模板: 天堂最新资源在线 | 四虎影院观看视频 | 青春草在线观看 | 一级欧美 | 天天综合天天影视色香欲俱全 | 欧美一区二区三区男人的天堂 | 天天拍天天干天天操 | 日日做日日摸夜夜爽 | 青草娱乐视频 | 青青国产精品视频 | 亚洲欧洲eeea在线观看 | 夭天干天天做天天免费看 | 亚洲国产成人精品区 | 欧美亚洲综合另类 | 中文字幕在线视频精品 | 五月婷婷色丁香 | 天天天夜夜夜夜夜 | 日韩欧美视频 | 欧美一卡二卡3卡4卡无卡六卡七卡科普 | 婷婷精品进入 | 日本亚欧乱色视频在线观看 | 欧美一区二区三区精品国产 | 日韩a级毛片免费观看 | 日韩在线毛片 | 亚洲精品午夜在线观看 | 亚洲福利视频网址 | 色无极亚洲影院 | 午夜国产精品免费观看 | 日本aⅴ永久免费网站www | 英国美女一级毛片视频 | 日韩系列第一页 | 天天影视色香欲综合网天天录日日录 | 色噜噜狠狠狠狠色综合久 | 亚洲福利网站 | 色爱区综合五月激情 | 无遮挡黄 | 婷婷激情五月综合 | 日日躁夜夜躁狠狠天天 | 天天躁夜夜躁很很躁 | 天天干天天玩天天操 | 一二三四影院网在线观看免费 |