2012-03-03 49 views
1

我一直在使用Android 3.2的摩托羅拉Xoom上運行一些帶有WiFi代理設置的測試。首先,與2.x版本相比,這是一大進步。現在如果你設置代理,大多數應用程序會自動獲取它(在2.x中,只有內置瀏覽器使用它)。所以我嘗試了諸如雅虎財經,彭博等,他們都通過代理罰款。我沒有得到的是一些瀏覽器,如Firefox,Opera,不會通過代理。任何想法他們如何做到這一點。基本上在我的應用程序中,如何決定是否要使用代理或嘗試直接連接。根據我的測試,如果我們沒有做任何特別的事,默認是使用代理。那麼,我需要做些什麼才能允許我的應用繞過Firefox/Opera代理?Android應用程序如何決定他們是否要使用網絡代理

謝謝!

回答

7

在與API版本> = 11(的Android 3.1及更高版本)的設備答案就在這裏:

Android's proxy confusing documentation resources

你可以簡單地調用從的ProxySelector類的getDefault()方法,並得到了默認的Android實現的ProxySelector。

ProxySelector defaultProxySelector = ProxySelector.getDefault(); 
Proxy proxy = null; 
List<Proxy> proxyList = defaultProxySelector.select(uri); 
if (proxyList.size() > 0) 
{ 
    proxy = proxyList.get(0); 
    Log.d(TAG, "Current Proxy Configuration: " + proxy.toString()); 
} 

我認爲,一些Android應用程序(你說Opera和Firefox)根本沒有做這種檢查,但實現了一些本地的代理處理不關心繫統如何工作的。

+0

謝謝,LeChuck。但基於我的測試,我不需要做任何事情,就像你在我的應用程序中所說的。我只是做一個基本的HttpClient Get,我可以看到它正在通過我的Xoom上的代理。因此,我認爲默認情況下,如果您使用內置網絡堆棧,則所有淨流量都會通過蜂窩和ICS中的代理服務器。這是正確的做法,因爲您不希望每個應用都必須自行設置代理。但是,在我的特定應用程序中,我確實想「繞過」代理並嘗試直接連接。我想知道是否有任何設置允許我這樣做。任何想法? – Safecoder 2012-03-03 19:39:16

+0

儘量避免使用HttpClient,建議[此處](http://android-developers.blogspot.com/2011/09/androids-http-clients.html)並解釋[here](http://www.android -proxy.com/2011/11/may-force-be-with-you-use.html)(至少代理的詳細信息)。似乎它不受Android團隊的支持。 HttpURLConnection類請求開發人員在需要時明確指定代理。 – lechuckcaptain 2012-03-04 16:31:17

+0

感謝您的信息。這是有道理的,讓我試試看,並讓你知道... – Safecoder 2012-03-06 07:12:50

相關問題