Proxy (Java SE 13 & JDK 13 )
Description: declaration: module: java.base, package: java.net, class: Proxy
Keywords: java.net.Proxy class

Module java.base
Package java.net

# Class Proxy

java.lang.Object
java.net.Proxy

    public class Proxy
    extends Object

This class represents a proxy setting, typically a type (http, socks) and a socket address. A `Proxy` is an immutable object.

Since:
  1.5
See Also:
  `ProxySelector`

- ## Nested Class Summary

  Nested Classes
  Modifier and Type | Class | Description
  --- | --- | ---
  `static class` | `Proxy.Type` | Represents the proxy type.

- ## Field Summary

  Fields
  Modifier and Type | Field | Description
  --- | --- | ---
  `static Proxy` | `NO_PROXY` | A proxy setting that represents a `DIRECT` connection, basically telling the protocol handler not to use any proxying.

- ## Constructor Summary

  Constructors
  Constructor | Description
  --- | ---
  `Proxy​(Proxy.Type type, SocketAddress sa)` | Creates an entry representing a PROXY connection.

- ## Method Summary

  Modifier and Type | Method | Description
  --- | --- | ---
  `SocketAddress` | `address()` | Returns the socket address of the proxy, or `null` if its a direct connection.
  `boolean` | `equals​(Object obj)` | Compares this object against the specified object.
  `int` | `hashCode()` | Returns a hashcode for this Proxy.
  `String` | `toString()` | Constructs a string representation of this Proxy.
  `Proxy.Type` | `type()` | Returns the proxy type.

  ### Methods declared in class java.lang.Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- ## Field Details

  - ### NO_PROXY

    public static final Proxy NO_PROXY
    A proxy setting that represents a `DIRECT` connection, basically telling the protocol handler not to use any proxying. Used, for instance, to create sockets bypassing any other global proxy settings (like SOCKS):

    `Socket s = new Socket(Proxy.NO_PROXY);`

- ## Constructor Details

  - ### Proxy

    public Proxy​(Proxy.Type type, SocketAddress sa)
    Creates an entry representing a PROXY connection. Certain combinations are illegal. For instance, for types Http, and Socks, a SocketAddress must be provided.

    Use the `Proxy.NO_PROXY` constant for representing a direct connection.

    Parameters:
      `type` - the `Type` of the proxy
      `sa` - the `SocketAddress` for that proxy
    Throws:
      `IllegalArgumentException` - when the type and the address are incompatible

- ## Method Details

  - ### type

    public Proxy.Type type()
    Returns the proxy type.
    Returns:
      a Type representing the proxy type

  - ### address

    public SocketAddress address()
    Returns the socket address of the proxy, or `null` if its a direct connection.
    Returns:
      a `SocketAddress` representing the socket end point of the proxy

  - ### toString

    public String toString()
    Constructs a string representation of this Proxy. This String is constructed by calling toString() on its type and concatenating " @ " and the toString() result from its address if its type is not `DIRECT`.
    Overrides:
      `toString` in class `Object`
    Returns:
      a string representation of this object.

  - ### equals

    public final boolean equals​(Object obj)
    Compares this object against the specified object. The result is `true` if and only if the argument is not `null` and it represents the same proxy as this object.

    Two instances of `Proxy` represent the same address if both the SocketAddresses and type are equal.

    Overrides:
      `equals` in class `Object`
    Parameters:
      `obj` - the object to compare against.
    Returns:
      `true` if the objects are the same; `false` otherwise.
    See Also:
      `InetSocketAddress.equals(java.lang.Object)`

  - ### hashCode

    public final int hashCode()
    Returns a hashcode for this Proxy.
    Overrides:
      `hashCode` in class `Object`
    Returns:
      a hash code value for this Proxy.
    See Also:
      `Object.equals(java.lang.Object)`, `System.identityHashCode(java.lang.Object)`