2012-03-03 6 views
1

Я провел некоторое тестирование с настройками прокси-сервера wifi на Motorola Xoom с Android 3.2. Итак, в первую очередь, это большой шаг вперед по сравнению с версиями 2.x. теперь, если вы устанавливаете прокси-сервер, большинство приложений автоматически его получают (в 2.x используется только встроенный браузер). Поэтому я пробовал такие вещи, как yahoo finance, bloomberg и т. Д., И все они прошли через прокси. То, что я не получаю, это некоторые браузеры, такие как firefox, Opera, не будут проходить через прокси. Любая идея, как они это сделали. В основном в моем приложении, как я могу решить, хочу ли я использовать прокси-сервер или пытаться напрямую подключиться. Основываясь на моем тестировании, если мы не делаем ничего особенного, по умолчанию используется прокси. Итак, что мне нужно сделать, чтобы позволить моему обозревателю пропустить прокси, например Firefox/Opera?Как Android-приложение решает, хотят ли они использовать сетевой прокси-сервер или нет

Спасибо!

ответ

7

На устройствах с API версии> = 11 (Android 3.1 и более) ответ здесь:

Android's proxy confusing documentation resources

Вы можете просто вызвать метод getDefault() из класса ProxySelector и получить реализацию по умолчанию для Android прокси-селектора.

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

+0

старайтесь избегать использования HttpClient, как предлагается [здесь] (http://android-developers.blogspot.com/2011/09/androids-http-clients.html) и объяснил [здесь] (http://www.android -proxy.com/2011/11/may-force-be-with-you-use.html) (по крайней мере, для деталей прокси-сервера). Похоже, что он не поддерживается командой Android. Класс HttpURLConnection попросит разработчика явно указать прокси-сервер при необходимости. – lechuckcaptain

+0

Спасибо за информацию. Это имеет смысл, и позвольте мне попробовать его и сообщить вам ... – Safecoder

Смежные вопросы