2012-03-17 64 views
2

我已經創建了Java Swing應用程序。有些用戶在激活應用程序,檢查程序更新等時無法連接到互聯網,因爲他們使用的是代理服務器。我需要使用ProxySelector來檢測代理設置的幫助

我一直在閱讀關於有趣的ProxySelector Class。這是非常好的,但我有一些關於它的問題,請:

  1. 將此類檢測所有類型的代理可以使用的(HTTP,HTTPS,FTP,襪子......)?

  2. 如果使用的代理服務器需要認證,該類會自動獲取其信息嗎?

  3. 我已經編寫代碼來獲取使用的代理設置。現在我需要測試這個,但是我沒有代理,所以我要設置一個代理,如here,但是有沒有更快的方法?我可以使用Public Proxies來測試這個像hidemyass.com嗎?

回答

3

我不能回答你所有的問題,但在這裏,他們中的一些:

1.I相信的,它會使用HTTP,HTTPS答SOCKS代理選擇。 AFAIK,FTP本身不受JVM的支持。

2.對於認證,可以使用下面的代碼:

Authenticator.setDefault(new Authenticator() { 
    private URL previous; 
    int count = 0; 
    @Override 
    protected PasswordAuthentication getPasswordAuthentication() { 
      try { 
       if (previous == getRequestingURL()) 
        count++; 
       if (previous != getRequestingURL()) { 
        count = 0; 
       } else { 
        if (count<3) { 
         // Ask for login/passwd to the user 
        } else { 
         // Throw a RuntimeException to prevent locking the account 
         throw new TooManyFailedAttemptException(); 
        } 

        return new PasswordAuthentication("login", "password".toCharArray()); 
       } 
      } finally { 
       previous = getRequestingURL(); 
      } 
    } 
}); 

3.我想,任何公共代理就可以了。我不確定你將如何確保你的代碼實際上使用它。就我個人而言,我設立了一個並不困難的Squid代理,在那裏你可以真正追蹤你的呼叫。

+0

非常感謝您的回覆。我正在尋找一種在我的Java代碼中使用公共代理的方式,但我想這是沒有辦法的。 – Brad 2012-03-18 11:09:42

+0

我發現如果我在Internet Explorer中設置公共代理數據,那麼它將在系統中設置。它被Java代碼檢測得很好。但我仍然無法找到具有驗證數據的公共代理來在我的代碼上進行測試。任何幫助將不勝感激。 – Brad 2012-03-18 21:22:48