org.apache.hc.client5.http

## Class HttpRoute

- java.lang.Object
- - org.apache.hc.client5.http.HttpRoute

All Implemented Interfaces:
  Cloneable, RouteInfo

    @Contract(threading=IMMUTABLE)
    public final class HttpRoute
    extends Object
    implements RouteInfo, Cloneable

Connection route definition for HTTP requests.

Since:
  4.0

### Nested Class Summary

### Nested classes/interfaces inherited from interface org.apache.hc.client5.http.RouteInfo

`RouteInfo.LayerType, RouteInfo.TunnelType`

### Constructor Summary

Constructors
Constructor and Description
`HttpRoute(org.apache.hc.core5.http.HttpHost target)` Creates a new direct insecure route.
`HttpRoute(org.apache.hc.core5.http.HttpHost target, org.apache.hc.core5.http.HttpHost proxy)` Creates a new plain route through a proxy.
`HttpRoute(org.apache.hc.core5.http.HttpHost target, InetAddress local, boolean secure)` Creates a new direct route.
`HttpRoute(org.apache.hc.core5.http.HttpHost target, InetAddress local, org.apache.hc.core5.http.HttpHost[] proxies, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)` Creates a new route with all attributes specified explicitly.
`HttpRoute(org.apache.hc.core5.http.HttpHost target, InetAddress local, org.apache.hc.core5.http.HttpHost proxy, boolean secure)` Creates a new route through a proxy.
`HttpRoute(org.apache.hc.core5.http.HttpHost target, InetAddress local, org.apache.hc.core5.http.HttpHost proxy, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)` Creates a new route with at most one proxy.

### Method Summary

All Methods Instance Methods Concrete Methods
`Object` `clone()`
`boolean` `equals(Object obj)` Compares this route to another.
`int` `getHopCount()` Obtains the number of hops in this route.
`org.apache.hc.core5.http.HttpHost` `getHopTarget(int hop)` Obtains the target of a hop in this route.
`RouteInfo.LayerType` `getLayerType()` Obtains the layering type of this route.
`InetAddress` `getLocalAddress()` Obtains the local address to connect from.
`InetSocketAddress` `getLocalSocketAddress()`
`org.apache.hc.core5.http.HttpHost` `getProxyHost()` Obtains the first proxy host.
`org.apache.hc.core5.http.HttpHost` `getTargetHost()` Obtains the target host.
`RouteInfo.TunnelType` `getTunnelType()` Obtains the tunnel type of this route.
`int` `hashCode()` Generates a hash code for this route.
`boolean` `isLayered()` Checks whether this route includes a layered protocol.
`boolean` `isSecure()` Checks whether this route is secure.
`boolean` `isTunnelled()` Checks whether this route is tunnelled through a proxy.
`String` `toString()` Obtains a description of this route.

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

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

### Constructor Detail

#### HttpRoute

    public HttpRoute(org.apache.hc.core5.http.HttpHost target,
                     InetAddress local,
                     org.apache.hc.core5.http.HttpHost[] proxies,
                     boolean secure,
                     RouteInfo.TunnelType tunnelled,
                     RouteInfo.LayerType layered)

Creates a new route with all attributes specified explicitly.

Parameters:
  `target` - the host to which to route
  `local` - the local address to route from, or `null` for the default
  `proxies` - the proxy chain to use, or `null` for a direct route
  `secure` - `true` if the route is (to be) secure, `false` otherwise
  `tunnelled` - the tunnel type of this route
  `layered` - the layering type of this route

#### HttpRoute

    public HttpRoute(org.apache.hc.core5.http.HttpHost target,
                     InetAddress local,
                     org.apache.hc.core5.http.HttpHost proxy,
                     boolean secure,
                     RouteInfo.TunnelType tunnelled,
                     RouteInfo.LayerType layered)

Creates a new route with at most one proxy.

Parameters:
  `target` - the host to which to route
  `local` - the local address to route from, or `null` for the default
  `proxy` - the proxy to use, or `null` for a direct route
  `secure` - `true` if the route is (to be) secure, `false` otherwise
  `tunnelled` - `true` if the route is (to be) tunnelled via the proxy, `false` otherwise
  `layered` - `true` if the route includes a layered protocol, `false` otherwise

#### HttpRoute

    public HttpRoute(org.apache.hc.core5.http.HttpHost target,
                     InetAddress local,
                     boolean secure)

Creates a new direct route. That is a route without a proxy.

Parameters:
  `target` - the host to which to route
  `local` - the local address to route from, or `null` for the default
  `secure` - `true` if the route is (to be) secure, `false` otherwise

#### HttpRoute

    public HttpRoute(org.apache.hc.core5.http.HttpHost target)

Creates a new direct insecure route.

Parameters:
  `target` - the host to which to route

#### HttpRoute

    public HttpRoute(org.apache.hc.core5.http.HttpHost target,
                     InetAddress local,
                     org.apache.hc.core5.http.HttpHost proxy,
                     boolean secure)

Creates a new route through a proxy. When using this constructor, the `proxy` MUST be given. For convenience, it is assumed that a secure connection will be layered over a tunnel through the proxy.

Parameters:
  `target` - the host to which to route
  `local` - the local address to route from, or `null` for the default
  `proxy` - the proxy to use
  `secure` - `true` if the route is (to be) secure, `false` otherwise

#### HttpRoute

    public HttpRoute(org.apache.hc.core5.http.HttpHost target,
                     org.apache.hc.core5.http.HttpHost proxy)

Creates a new plain route through a proxy.

Parameters:
  `target` - the host to which to route
  `proxy` - the proxy to use
Since:
  4.3

### Method Detail

#### getTargetHost

    public org.apache.hc.core5.http.HttpHost getTargetHost()

Description copied from interface: `RouteInfo`
Obtains the target host.

Specified by:
  `getTargetHost` in interface `RouteInfo`
Returns:
  the target host

#### getLocalAddress

    public InetAddress getLocalAddress()

Description copied from interface: `RouteInfo`
Obtains the local address to connect from.

Specified by:
  `getLocalAddress` in interface `RouteInfo`
Returns:
  the local address, or `null`

#### getLocalSocketAddress

    public InetSocketAddress getLocalSocketAddress()

#### getHopCount

    public int getHopCount()

Description copied from interface: `RouteInfo`
Obtains the number of hops in this route. A direct route has one hop. A route through a proxy has two hops. A route through a chain of n proxies has n+1 hops.

Specified by:
  `getHopCount` in interface `RouteInfo`
Returns:
  the number of hops in this route

#### getHopTarget

    public org.apache.hc.core5.http.HttpHost getHopTarget(int hop)

Description copied from interface: `RouteInfo`
Obtains the target of a hop in this route. The target of the last hop is the `target host`, the target of previous hops is the respective proxy in the chain. For a route through exactly one proxy, target of hop 0 is the proxy and target of hop 1 is the target host.

Specified by:
  `getHopTarget` in interface `RouteInfo`
Parameters:
  `hop` - index of the hop for which to get the target, 0 for first
Returns:
  the target of the given hop

#### getProxyHost

    public org.apache.hc.core5.http.HttpHost getProxyHost()

Description copied from interface: `RouteInfo`
Obtains the first proxy host.

Specified by:
  `getProxyHost` in interface `RouteInfo`
Returns:
  the first proxy in the proxy chain, or `null` if this route is direct

#### getTunnelType

    public RouteInfo.TunnelType getTunnelType()

Description copied from interface: `RouteInfo`
Obtains the tunnel type of this route. If there is a proxy chain, only end-to-end tunnels are considered.

Specified by:
  `getTunnelType` in interface `RouteInfo`
Returns:
  the tunnelling type

#### isTunnelled

    public boolean isTunnelled()

Description copied from interface: `RouteInfo`
Checks whether this route is tunnelled through a proxy. If there is a proxy chain, only end-to-end tunnels are considered.

Specified by:
  `isTunnelled` in interface `RouteInfo`
Returns:
  `true` if tunnelled end-to-end through at least one proxy, `false` otherwise

#### getLayerType

    public RouteInfo.LayerType getLayerType()

Description copied from interface: `RouteInfo`
Obtains the layering type of this route. In the presence of proxies, only layering over an end-to-end tunnel is considered.

Specified by:
  `getLayerType` in interface `RouteInfo`
Returns:
  the layering type

#### isLayered

    public boolean isLayered()

Description copied from interface: `RouteInfo`
Checks whether this route includes a layered protocol. In the presence of proxies, only layering over an end-to-end tunnel is considered.

Specified by:
  `isLayered` in interface `RouteInfo`
Returns:
  `true` if layered, `false` otherwise

#### isSecure

    public boolean isSecure()

Description copied from interface: `RouteInfo`
Checks whether this route is secure.

Specified by:
  `isSecure` in interface `RouteInfo`
Returns:
  `true` if secure, `false` otherwise

#### equals

    public boolean equals(Object obj)

Compares this route to another.

Overrides:
  `equals` in class `Object`
Parameters:
  `obj` - the object to compare with
Returns:
  `true` if the argument is the same route, `false`

#### hashCode

    public int hashCode()

Generates a hash code for this route.

Overrides:
  `hashCode` in class `Object`
Returns:
  the hash code

#### toString

    public String toString()

Obtains a description of this route.

Overrides:
  `toString` in class `Object`
Returns:
  a human-readable representation of this route

#### clone

    public Object clone()
                 throws CloneNotSupportedException

Overrides:
  `clone` in class `Object`
Throws:
  `CloneNotSupportedException`