ProxySelector (Java Platform SE 8 )
Keywords: java.net.ProxySelector class
Date: 2026-04-17

compact1, compact2, compact3
java.net

## Class ProxySelector

- java.lang.Object
- - java.net.ProxySelector

-     public abstract class ProxySelector
      extends Object

  Selects the proxy server to use, if any, when connecting to the network resource referenced by a URL. A proxy selector is a concrete sub-class of this class and is registered by invoking the `setDefault` method. The currently registered proxy selector can be retrieved by calling `getDefault` method.

  When a proxy selector is registered, for instance, a subclass of URLConnection class should call the `select` method for each URL request so that the proxy selector can decide if a direct, or proxied connection should be used. The `select` method returns an iterator over a collection with the preferred connection approach.

  If a connection cannot be established to a proxy (PROXY or SOCKS) servers then the caller should call the proxy selector's `connectFailed` method to notify the proxy selector that the proxy server is unavailable.

  The default proxy selector does enforce a set of System Properties related to proxy settings.

  Since:
    1.5

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `ProxySelector()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `abstract void` | `connectFailed(URI uri, SocketAddress sa, IOException ioe)` Called to indicate that a connection could not be established to a proxy/socks server.
    `static ProxySelector` | `getDefault()` Gets the system-wide proxy selector.
    `abstract List<Proxy>` | `select(URI uri)` Selects all the applicable proxies based on the protocol to access the resource with and a destination address to access the resource at.
    `static void` | `setDefault(ProxySelector ps)` Sets (or unsets) the system-wide proxy selector.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### ProxySelector

          public ProxySelector()

  - ### Method Detail

    - #### getDefault

          public static ProxySelector getDefault()

      Gets the system-wide proxy selector.
      Returns:
        the system-wide `ProxySelector`
      Throws:
        `SecurityException` - If a security manager has been installed and it denies `NetPermission``("getProxySelector")`
      Since:
        1.5
      See Also:
        `setDefault(ProxySelector)`

    - #### setDefault

          public static void setDefault(ProxySelector ps)

      Sets (or unsets) the system-wide proxy selector. Note: non-standard protocol handlers may ignore this setting.
      Parameters:
        `ps` - The HTTP proxy selector, or `null` to unset the proxy selector.
      Throws:
        `SecurityException` - If a security manager has been installed and it denies `NetPermission``("setProxySelector")`
      Since:
        1.5
      See Also:
        `getDefault()`

    - #### select

          public abstract List<Proxy> select(URI uri)

      Selects all the applicable proxies based on the protocol to access the resource with and a destination address to access the resource at. The format of the URI is defined as follow:
      - http URI for http connections
      - https URI for https connections
      - `socket://host:port`
        for tcp client sockets connections
      Parameters:
        `uri` - The URI that a connection is required to
      Returns:
        a List of Proxies. Each element in the the List is of type `Proxy`; when no proxy is available, the list will contain one element of type `Proxy` that represents a direct connection.
      Throws:
        `IllegalArgumentException` - if the argument is null

    - #### connectFailed

          public abstract void connectFailed(URI uri,
                                             SocketAddress sa,
                                             IOException ioe)

      Called to indicate that a connection could not be established to a proxy/socks server. An implementation of this method can temporarily remove the proxies or reorder the sequence of proxies returned by `select(URI)`, using the address and the IOException caught when trying to connect.
      Parameters:
        `uri` - The URI that the proxy at sa failed to serve.
        `sa` - The socket address of the proxy/SOCKS server
        `ioe` - The I/O exception thrown when the connect failed.
      Throws:
        `IllegalArgumentException` - if either argument is null

Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2026, Oracle and/or its affiliates. All rights reserved. Use is subject to license terms. Also see the documentation redistribution policy.