Skip to content

Commit ae431aa

Browse files
committed
use Android Proxy Selector instead or env vars.
1 parent 8a376f2 commit ae431aa

1 file changed

Lines changed: 24 additions & 6 deletions

File tree

android/src/main/java/com/browserstack/fluttersystemproxy/flutter_system_proxy/FlutterSystemProxyPlugin.java

Lines changed: 24 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@
33
import androidx.annotation.NonNull;
44
import android.text.TextUtils;
55

6+
import java.net.InetSocketAddress;
7+
import java.net.Proxy;
8+
import java.net.ProxySelector;
9+
import java.net.URI;
610
import java.util.HashMap;
711
import java.util.Map;
812

@@ -31,12 +35,26 @@ public void onAttachedToEngine(@NonNull FlutterPluginBinding flutterPluginBindin
3135
@Override
3236
public void onMethodCall(@NonNull MethodCall call, @NonNull Result result) {
3337
if (call.method.equals("getDeviceProxy")) {
34-
Map map = new HashMap<String, String>();
35-
map.put("http.proxyHost", System.getProperty("http.proxyHost"));
36-
map.put("http.proxyPort", System.getProperty("http.proxyPort"));
37-
map.put("https.proxyHost", System.getProperty("https.proxyHost"));
38-
map.put("https.proxyPort", System.getProperty("https.proxyPort"));
39-
result.success(map);
38+
HashMap<String, String> _map = new HashMap<String, String>() {
39+
{
40+
put("host", null);
41+
put("port", null);
42+
}
43+
};
44+
String url = call.argument("url");
45+
ProxySelector selector = ProxySelector.getDefault();
46+
try {
47+
for (Proxy proxy : selector.select(new URI(url))) {
48+
if (proxy.type() == Proxy.Type.HTTP) {
49+
InetSocketAddress addr = (InetSocketAddress) proxy.address();
50+
_map.put("host", addr.getHostName());
51+
_map.put("port", Integer.toString(addr.getPort()));
52+
}
53+
}
54+
result.success(_map);
55+
} catch (Exception ex) {
56+
result.error("URL Error",ex.getMessage(),null);
57+
}
4058
} else {
4159
result.notImplemented();
4260
}

0 commit comments

Comments
 (0)