Перенаправление всей сети приложения Android (которое использует библиотеки) через прокси-сеть (если она доступна)
Я работаю над приложением для Android и использую различные библиотеки, такие как Picaso, Retrofit, Crashlytics и т. д. и у моего колледжа Wi-Fi есть прокси на нем.
Я знаю, как использовать прокси при отправке HTTP-запросов на сервер, но все библиотеки, которые я использую, имеют собственные HTTP-запросы, поэтому переопределение всех их HTTP-классов будет головной болью, и я даже не знаю, как это сделать.
Итак, есть ли способ направить весь трафик приложения через прокси (когда доступно), как любая библиотека или какой-либо HTTP-запрос, переопределяющий все исходящие запросы.
2 ответа:
Я реализовал это, как показано ниже. (Я забыл первоисточник).
import java.net.Proxy; import java.net.ProxySelector; //setting Application-Wide proxy Values private void setProxy() { //Device proxy settings ProxySelector defaultProxySelector = ProxySelector.getDefault(); Proxy proxy = null; List<Proxy> proxyList = defaultProxySelector.select(URI.create("http://www.google.in")); if (proxyList.size() > 0) { proxy = proxyList.get(0); Log.d("proxy", String.valueOf(proxy)); try { String proxyType = String.valueOf(proxy.type()); //setting HTTP Proxy if (proxyType.equals("HTTP")) { String proxyAddress = String.valueOf(proxy.address()); String[] proxyDetails = proxyAddress.split(":"); String proxyHost = proxyDetails[0]; String proxyPort = proxyDetails[1]; Log.d("proxy", proxyType + " " + proxyHost + " " + proxyPort); System.setProperty("http.proxyHost", proxyHost); System.setProperty("http.proxyPort", proxyPort); } } catch (Exception e) { e.printStackTrace(); } } }
Поместите этот метод в метод onCreate вашего базового действия, чтобы он выполнялся каждый раз, когда пользователь открывает приложение.