Intereting Posts
GlCreateShader и glCreateProgram не работают на Android Загружайте данные в базу данных из приложения Android через веб-службу Когда и как часто вызывается методPrepareOptionsMenu () для ActionBar? Android – Обратный список как отображение сообщений Расширяемый андроид list-view, набор пользовательских чертежей Свернуть все группы, кроме выбранной группы, в расширяемом списке Можно ли использовать один и тот же идентификатор приложения facebook как для Android, так и для приложения iphone? Невозможно установить плагин TFS в студии Android Изменение процентной доли указателя в макете ограничения Где я могу найти список функций Android, которые устарели новыми функциями? TabLayout выбранный уровень гравитации Возобновить загрузку с Android-менеджера загрузки при неудачной загрузке Ошибка сборки Gradle: причина: org.gradle.api.internal.ExtensibleDynamicObject Использовать имя пакета в XML Виджет Android не отображается в списке после

Заставить HttpURLConnection использовать мобильную сеть и вернуть ее в WiFi

Мое приложение использует HttpURLConnection для подключения к моим службам REST. Я регистрирую ошибки и замечаю, что иногда случается, что пользователь получает Wi-Fi-соединение, но имеет прокси-сервер.

Например, те аэропорты Wi-Fi, которые перенаправляют вас на оплату страниц, а затем позволяют вам пользоваться Интернетом. Мой код не соответствует перенаправлениям.

Я действительно хочу проигнорировать присутствие Wi-Fi и принудительное общение по 3G / 4G / E. Как я могу это сделать на Android?

Solutions Collecting From Web of "Заставить HttpURLConnection использовать мобильную сеть и вернуть ее в WiFi"

Перейти к мобильной сети:

Как только вы обнаружите прокси-сервер, вы откроете диалоговое окно, сообщающее пользователю, что ваше приложение не может использовать эту сеть и, следовательно, вы переходите на мобильную сеть. Вы можете переключиться на мобильную сеть, используя класс ConnectivityManager .

 ConnectivityManager cm; cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); cm.setNetworkPreference(ConnectivityManager.TYPE_MOBILE); 

И вернитесь к умолчанию, когда вы закончите:

 cm.setNetworkPreference(ConnectivityManager.DEFAULT_NETWORK_PREFERENCE); 

Обнаружение прокси:

Обнаруживать прокси-сервер, используя следующий фрагмент

 HttpURLConnection conn; ... if (conn.getResponseCode() == HTTP_PROXY_AUTH){ // You got a '407: Proxy authentication required' response. // Set the networkPreference() here and retry when // network connection changes to TYPE_MOBILE. } 

Вы можете проверить это сообщение, чтобы узнать, как использовать HttpURLConnection через прокси-сервер. Как сделать HttpURLConnection использовать прокси-сервер?

Обнаружить «изменение сети»:

Чтобы узнать, как обнаружить «изменение сети», см. Этот пост: Android, Как обрабатывать изменения в сети (от GPRS до Wi-Fi и наоборот) при опросе данных

Обновить:

Если вы не можете отобразить диалоговое окно, по крайней мере отправьте Notification о статусе, чтобы пользователь узнал о сетевом коммутаторе через некоторое время.

В ваших действиях, когда вы пытаетесь позвонить в свои веб-службы

Просто отключите WIFI, если он включен . В Интернете будет много фрагментов кода для этого, как это

Теперь также проверьте, доступна ли мобильная сеть передачи данных или нет , и если доступно, сделайте свой вызов, в противном случае покажите пользователю диалоговое окно, в котором для этого приложения потребуются мобильные сети передачи данных.

И как только вы завершите свои HTTP-вызовы, снова включите WIFI .