How do I get a proxy free connection in Java?

When establishing a connection with urlconnection, how to avoid passing through proxyselector, or how to ensure that the connection is not affected by any agent known to Java?

I think this is proxy NO_ Purpose of proxy Reference Javadoc:

However, such a connection will still be through proxyselector Don't I understand?

I did a little test to prove my point:

public static void main(String[] args) throws MalformedURLException,IOException {
    ProxySelector.setDefault(new MyProxySelector());
    URL url = new URL("http://foobar.com/x1/x2");
    URLConnection connection = url.openConnection(Proxy.NO_PROXY);
    connection.connect();
}

And a virtual proxyselector that does nothing but record what is happening:

public class MyProxySelector extends ProxySelector {

    @Override
    public List<Proxy> select(URI uri) {
        System.out.println("MyProxySelector called with URI = " + uri);
        return Collections.singletonList(Proxy.NO_PROXY);
    }

    @Override
    public void connectFailed(URI uri,SocketAddress sa,IOException ioe) {}
}

Print:

"MyProxySelector called with URI = socket://foobar.com:80"

(note how the protocol changes from HTTP to socket)

Of course I can create my proxyselector so that it always returns proxy NO_ Proxy, if the URI scheme is socket, but I think it is possible to have a socks proxy on the website, and then it will not be true

Let me reiterate this problem: I need a way to ensure that a specific urlconnection does not use a proxy, no matter what system properties can be set or what proxyselector can be installed

Solution

This is traced to JDK bug 8144008

The content of this article comes from the network collection of netizens. It is used as a learning reference. The copyright belongs to the original author.
THE END
分享
二维码
< <上一篇
下一篇>>