通过代理网络(如果可用)重定向 Android 应用程序(正在使用库)的所有网络
Redirect all network of Android App (which is using Libraries) through a proxy network (if available)
我正在开发一个 Android 应用程序,我正在使用各种库,如 Picaso、Retrofit、Crashlytics 等,我的大学 WIFI 有代理。
我知道在向服务器发送 HTTP 请求时如何使用代理,但是我使用的所有库都有自己的 HTTP 请求,因此覆盖所有它们的 HTTP 类 会让人头疼,我什至不知道该怎么做。
那么,有没有办法通过代理(如果可用)路由应用程序的所有流量,就像任何库或某些 HTTP 请求覆盖所有传出请求一样。
您可以按照以下方式重定向特定的网络流量(基于每个应用程序)link。
Network traffic via Proxy
我按如下方式实现了这一点。
(忘记原出处了)
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();
}
}
}
将此方法放入您的基础 activity 的 onCreate 方法中,这样它就会在用户每次打开应用程序时执行。
我正在开发一个 Android 应用程序,我正在使用各种库,如 Picaso、Retrofit、Crashlytics 等,我的大学 WIFI 有代理。
我知道在向服务器发送 HTTP 请求时如何使用代理,但是我使用的所有库都有自己的 HTTP 请求,因此覆盖所有它们的 HTTP 类 会让人头疼,我什至不知道该怎么做。
那么,有没有办法通过代理(如果可用)路由应用程序的所有流量,就像任何库或某些 HTTP 请求覆盖所有传出请求一样。
您可以按照以下方式重定向特定的网络流量(基于每个应用程序)link。
Network traffic via Proxy
我按如下方式实现了这一点。 (忘记原出处了)
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();
}
}
}
将此方法放入您的基础 activity 的 onCreate 方法中,这样它就会在用户每次打开应用程序时执行。