Заставить 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 .