2011-07-13 54 views
10

對於Java桌面應用程序後,我們設置這些屬性如何設置HTTP代理在applet

System.setProperty("java.net.useSystemProxies","true"); 
System.setProperty("http.proxyHost", "1.1.1.1"); 
System.setProperty("http.proxyPort", "8080"); 

每個HTTP連接將通過定義的代理來完成。

但對於一個小程序,這些不工作(在一個applet查看它,但它不瀏覽器。) 小程序總是使用在控制面板\ java的\網絡設置\代理設置中定義這些設置。

如何在applet中設置代理? (使用每一個打開的連接代理類是不適合我的解決方案。)

Applet的簽名並與Java 1.6

回答

7

編譯我想,真正的原因是系統性能的方法行不通的到applet啓動時,Java運行時系統已經讀取了屬性並設置了默認的代理選擇器。

您是否嘗試過使用ProxySelector?請參閱this document的第4)節。

當然,這隻有在你的applet是一個已簽名的applet時纔有效。

+0

它的工作感謝 – e13420xx

+0

@ e13420xx,'ProxySelector'爲小程序工作? –

+0

@尼古拉·庫茲涅佐夫 - 我認爲這是......因爲這是他所問的。 –

0

您可以使用API​​來做到這一點,但不是每個連接。

看看URL.openConnection()。它將調用委託給處理程序。處理程序由處理程序工廠創建(如果已註冊)。所以,你必須註冊你自己的工廠,創建你的通過代理執行URL連接的URL處理程序(調用URL.openConnection(proxy))。

工廠必須實現接口URLStreamHandlerFactory,並且可以通過調用靜態方法URL.setURLStreamHandlerFactory()來註冊。