Friday, September 19, 2025
HomeLanguagesJavajava.net.ProxySelector Class in Java

java.net.ProxySelector Class in Java

ProxySelector determines which resource has to be requested via proxy as a result return List<Proxy>

Methods of ProxySelector class : 

Method Description
connectFailed() This method is invoked when failed to establish a connection
getDefault() This method is used for retrieving the system-wide ProxySelector
select() This method returns Proxy to access resource
setDefault()  This method is used to set or unset the system-wide ProxySelector

Illustration: Sample Code for logic

Java




// Java Program to illustrate ProxySelector Class
// of java.net package
// only creating methods here
  
// Importing standard input output classes
import java.io.IOException;
// Importing classes from java.net package
import java.net.InetSocketAddress;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.SocketAddress;
import java.net.URI;
// Importing List and ArrayList as utility classes from
// java.util package
import java.util.ArrayList;
import java.util.List;
  
// Class 1
// Helper class extending ProxySelector class
public class PrivateDataProxy extends ProxySelector {
  
    // According to API we need to return List<Proxy>
    // even if we return only one element, so
  
    // Creating List class object of Proxy type
    private final List<Proxy> noProxy = new ArrayList<>();
    private final List<Proxy> proxies = new ArrayList<>();
  
    // Constructor of this class
    public PrivateDataProxy()
    {
  
        // If no proxy required to access resource
        // use Proxy.NO_PROXY
        noProxy.add(Proxy.NO_PROXY);
  
        // Creating  InetSocketAddress, and
        // secure.connection.com doesn't exist 443 is an
        // https port
        InetSocketAddress inetSocketAddress
            = new InetSocketAddress("secure.connection.com",
                                    443);
  
        // Now creating http proxy
        Proxy proxy
            = new Proxy(Proxy.Type.HTTP, inetSocketAddress);
  
        // Finally adding proxy into proxy list
        proxies.add(proxy);
    }
  
    // Method 1 of this class
    //@Override
    public List<Proxy> select(URI uri)
    {
        if (uri.getPath().startsWith("/confidential")) {
            // If URI path starts with '/confidential' then
            // use proxy server
            return proxies;
        }
  
        // If url don't start with '/confidential' then
        //  no need in proxy
        return noProxy;
    }
  
    // Method 2 of this class
    // @Override
    public void connectFailed(URI arg0, SocketAddress arg1,
                              IOException arg2)
    {
        // Properly handle connection failing
    }
}


Implementation: Using custom ProxySelector

Java




// Java Program to illustrate ProxySelector Class
// of java.net package
// Using custom ProxySelector
  
// Importing required classes from respective packages
import java.io.IOException;
import java.net.Proxy;
import java.net.ProxySelector;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.List;
  
// Main class
public class ProxySelectorDemo {
  
    // Main driver method
    public static void main(String[] args)
        throws URISyntaxException, IOException
    {
  
        // Passing the string uri
        PrivateDataProxy privateDataProxy
            = new PrivateDataProxy();
  
        // The setting the system-wide proxy selector
        ProxySelector.setDefault(privateDataProxy);
  
        // Print the default value
        // using getDefault() method
        System.out.println("Default value: "
                           + ProxySelector.getDefault());
  
        // Display message only
        System.out.println(
            "Getting proxy for /confidential");
  
        // Passing the string URL
        String confidentialUrl
            = "https://www.download.com/confidential";
  
        // Now, calling the constructor of the URL class
        URL confidential = new URL(confidentialUrl);
  
        // Requiring an proxy for url
        List<Proxy> confidentialProxies
            = privateDataProxy.select(confidential.toURI());
  
        // Show the proxy that was selected
        System.out.println("Proxy to use : "
                           + confidentialProxies.get(0));
  
        // Display message only
        System.out.println(
            "Getting proxy for /non-confidential");
  
        // passing the string URL
        // Custom URL as input
        String nonConfidentialURL
            = "https://www.download.com/non-confidential";
  
        // Now, calling the constructor of the URL class
        URL nonConfidential = new URL(nonConfidentialURL);
  
        // Requiring an proxy for URL
        List<Proxy> nonConfidentialProxies
            = privateDataProxy.select(
                nonConfidential.toURI());
  
        // Display the proxy that was selected
        System.out.println("Proxy to use : "
                           + nonConfidentialProxies.get(0));
    }
}


Output: 

Default value: entity.PrivateDataProxy@5cad8086
Getting proxy for /confidential
Proxy to use : HTTP @ secure.connection.com:443
Getting proxy for /non-confidential
Proxy to use : DIRECT
Dominic
Dominichttp://wardslaus.com
infosec,malicious & dos attacks generator, boot rom exploit philanthropist , wild hacker , game developer,
RELATED ARTICLES

Most Popular

Dominic
32303 POSTS0 COMMENTS
Milvus
84 POSTS0 COMMENTS
Nango Kala
6666 POSTS0 COMMENTS
Nicole Veronica
11841 POSTS0 COMMENTS
Nokonwaba Nkukhwana
11898 POSTS0 COMMENTS
Shaida Kate Naidoo
6781 POSTS0 COMMENTS
Ted Musemwa
7059 POSTS0 COMMENTS
Thapelo Manthata
6740 POSTS0 COMMENTS
Umr Jansen
6745 POSTS0 COMMENTS