Вот минималистичный пример того, как программно настроить прокси:
SocketAddress a = new InetSocketAddress("proxy.example.com", 8080);
Proxy p = new Proxy(Proxy.Type.HTTP, a);
ProxySelector ps = new ProxySelector() {
public List<Proxy> select(URI uri) { return Collections.singletonList(p); }
public void connectFailed(URI uri, SocketAddress sa, IOException ioe) {}
};
ProxySelector.setDefault(ps);
Реальный код должен, конечно, делать что-то разумное в connectFailed
, и проверить схему URI в select
, если приложение будет также использовать другие схемы, которые не поддерживаются прокси-сервером. В последнем случае он должен вернуть экземпляр Proxy типа Proxy.Type.DIRECT
, что приведет к обходу соединения через прокси.
Я использовал это только с URL-адресами http и https, поэтому не знаю, работает ли он с другими схемами. Для https URL-адресов прокси-сервер должен поддерживать метод CONNECT.