java代理服務器設置方法_第1頁
java代理服務器設置方法_第2頁
java代理服務器設置方法_第3頁
免費預覽已結束,剩余1頁可下載查看

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、在 Java 中,使用proxy 是通過設置java 環(huán)境變量來實現(xiàn)的,也就是JVM 的系統(tǒng)屬性。我們需要設置三個屬性,proxySetproxyHost 和 proxyPort 。proxySet 是個 boolean 類型的,可以設置為true 或者 false, true 代表使用代理服務器。proxyHost 是代理服務器的IP 地址proxyPort 是代理服務器的端口地址。我們有兩種方法設置這種系統(tǒng)屬性,一種是命令行下運行Java 程序的時候,通過參數(shù)付值一種是在java 源程序中設置。第一種方法的格式如下:java-DproxySet=true-DproxyHost=myProx

2、ySe-DproxyPort=80MyJavaApp第二種方法,就是直接在源程序中通過系統(tǒng)屬性來寫,如下:importjava.util.Properties;.strProxy="7"strPort="8080"PropertiessystemProperties=System.getProperties;systemProperties.setProperty;systemProperties.setProperty;JDK1.3 以上版本,只要設置了proxyHost 和 proxyPort 就不用寫proxySet 了。下面是

3、一個完整的例子:strUrl=""URLurl=newURL;URLConnectionconn=url.openConnection;strProxy="7"strPort="8080"PropertiessystemProperties=System.getProperties;systemProperties.setProperty;systemProperties.setProperty;BufferedReaderrd=newBufferedReader);while)!=null)rd.close;17

4、.5.2使用 ProxySelector選擇代理服務器前面介紹的直接使用 Proxy 對象可以在打開 URLConnection 或 Socket 時指定代理服務器,使用這種方式需要每次打開連接都顯式設置代理服務器。如果想讓系統(tǒng)打開連接時總是具有默認的代理服務器,則可以使用.ProxySelector,它可以它根據不同的連接使用不同的代理服務器。系統(tǒng)默認的ProxySelector會檢測各種系統(tǒng)屬性和URL協(xié)議,然后決定怎樣連接不同的主機。當然,程序也可以調用ProxySelector類的 setDefaultI()靜態(tài)方法來設置默認代理服務器,也可以調用getDefault()方法獲得系統(tǒng)當

5、前默認的代理服務器。程序可以通過System 類來設置系統(tǒng)的代理服務器屬性,關于代理服務器常用的屬性名有如下三個:xyHost:設置 HTTP訪問所使用的代理服務器地址。該屬性名的前綴可以改為https 、 ftp等,分別用于設置HTTP訪問、安全HTTP訪問和 FTP 訪問所用的代理服務器地址。xyPort:設置 HTTP訪問所使用的代理服務器端口。該屬性名的前綴可以改為https 、 ftp等,分別用于設置HTTP訪問、安全HTTP訪問和 FTP 訪問所用的代理服務器端口。http.nonProxyHosts:設置 HTTP訪問中不需要使用代理服務器的遠程主

6、機,可以使用* 通配符,如果有多個地址,多個地址用豎線( | )分隔。下面程序示范了通過改變系統(tǒng)屬性來改變默認的代理服務器。程序清單: codes/17/17-5/ ProxySelectorTest.javapublic class ProxySelectorTest/ 測試本地 JVM 的網絡默認配置 public void setLocalProxy()Properties prop = System.getProperties();/ 設置 HTTP 訪問要使用的代理服務器的地址 prop.setProperty("xyHost", "10

7、.10.0.96");/ 設置 HTTP 訪問要使用的代理服務器的端口 prop.setProperty("xyPort", "8080");/ 設置 HTTP 訪問不需要通過代理服務器訪問的主機,/ 可以使用 * 通配符,多個地址用 | 分隔 prop.setProperty("http.nonProxyHosts", "localhost|10.20.*");/ 設置安全 HTTP 訪問使用的代理服務器地址與端口/ 它沒有 https.nonProxyHosts 屬性,它按照 http

8、.nonProxyHosts 中設置的規(guī)則訪問 prop.setProperty("xyHost", "6"); prop.setProperty("xyPort", "443");/ 設置 FTP 訪問的代理服務器的主機、端口以及不需要使用代理服務器的主機prop.setProperty("xyHost", "6");prop.setProperty("xyPo

9、rt", "2121");prop.setProperty("ftp.nonProxyHosts", "localhost|10.10.*");/ 設置 socks 代理服務器的地址與端口 prop.setProperty("socks.ProxyHost", "6"); prop.setProperty("socks.ProxyPort", "1080");/ 清除 proxy 設置public void removeLoca

10、lProxy()Properties prop = System.getProperties();/ 清除 HTTP 訪問的代理服務器設置 prop.remove("xyHost"); prop.remove("xyPort"); prop.remove("http.nonProxyHosts");/ 清除 HTTPS 訪問的代理服務器設置 prop.remove("xyHost"); prop.remove("xyPort")

11、;/ 清除 FTP 訪問的代理服務器設置prop.remove("xyHost");prop.remove("xyPort");prop.remove("ftp.nonProxyHosts");/ 清除 SOCKS 的代理服務器設置 prop.remove("socksProxyHost"); prop.remove("socksProxyPort");/ 測試 HTTP 訪問public void showHttpProxy()throws MalformedURL

12、Exception , IOExceptionURL url = new URL("");/ 直接打開連接,但系統(tǒng)會調用剛設置的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 IOException

13、ProxySelectorTest test = new ProxySelectorTest(); test.setLocalProxy();test.showHttpProxy();test.removeLocalProxy();上面程序中三行粗體字代碼設置Java 打開 HTTP訪問時的代理服務器屬性,其中前兩行代碼設置代理服務器的地址和端口,第三行代碼設置該代理HTTP訪問哪些主機時不需要使用代理服務器。上面程序的行代碼處直接打開一個URLConnection ,但系統(tǒng)會為打開該URLConnection 時使用代理服務器。運行上面程序,將會看到程序長時間等待,因為 192.168.0.

14、96 通常并不是有效的代理服務器(當然,如果讀者運行的機器恰好可以使用地址為 6 的代理服務器又另當別論)。系統(tǒng)提供了默認的ProxySelector子類作為代理選擇器,開發(fā)者可以實現(xiàn)自己的代理選擇器,程序可以通過繼承ProxySelector來實現(xiàn)自己的代理選擇器。繼承ProxySelector需要重寫兩個方法:List<Proxy> select(URI uri):實現(xiàn)該方法讓代理選擇器根據不同的URI 來使用不同的代理服務器,該方法就是代理選擇器管理網絡連接使用代理服務器的關鍵。connectFailed(URI uri, SocketAddress s

15、a, IOException ioe):當系統(tǒng)通過默認的代理服務器建立連接失敗后,代理選擇器將會自動調用該方法。通過重寫該方法可以對連接代理服務器失敗的情形進行處理。系統(tǒng)默認的代理服務器選擇器也重寫了 connectFailed 方法,它重寫該方法的處理策略是:當系統(tǒng)設置的代理服務器失敗時,默認代理選擇器將會采用直連的方式連接遠程資源,所以當運行上面程序等待了足夠長時間時,程序依然可以打印出該遠程資源的所有內容。When you are old and grey and full of sleep,And nodding by the fire, take down this book,And

16、 slowly read, and dream of the soft lookYour eyes had once, and of their shadows deep;How many loved your moments of glad grace,And loved your beauty with love false or true,But one man loved the pilgrim soul in you,And loved the sorrows of your changing face;And bending down beside the glowing bars

17、,Murmur, a little sadly, how love fledAnd paced upon the mountains overheadAnd hid his face amid a crowd of stars.The furthest distance in the worldIs not between life and deathBut when I stand in front of youYet you don't know thatI love you.The furthest distance in the worldIs not when I stand in front of youYet you can't see my loveBut when undoubtedly knowing the love from bothYet cannot be together.The furthest distance in the worldIs not being

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論