## org.apache.http.conn.routing
Class HttpRoute

    java.lang.Object
      org.apache.http.conn.routing.HttpRoute

All Implemented Interfaces:
  Cloneable, RouteInfo

    @Immutable
    public final class HttpRoute

extends Object
implements RouteInfo, Cloneable

The route for a request. Instances of this class are unmodifiable and therefore suitable for use as lookup keys.

Since:
  4.0

Nested Class Summary

Nested classes/interfaces inherited from interface org.apache.http.conn.routing.RouteInfo
`RouteInfo.LayerType, RouteInfo.TunnelType`

Constructor Summary
`HttpRoute(HttpHost target)` Creates a new direct insecure route.
`HttpRoute(HttpHost target, InetAddress local, boolean secure)` Creates a new direct route.
`HttpRoute(HttpHost target, InetAddress local, HttpHost[] proxies, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)` Creates a new route with all attributes specified explicitly.
`HttpRoute(HttpHost target, InetAddress local, HttpHost proxy, boolean secure)` Creates a new route through a proxy.
`HttpRoute(HttpHost target, InetAddress local, HttpHost proxy, boolean secure, RouteInfo.TunnelType tunnelled, RouteInfo.LayerType layered)` Creates a new route with at most one proxy.

Method Summary
`Object` `clone()`
`boolean` `equals(Object obj)` Compares this route to another.
`int` `getHopCount()` Obtains the number of hops in this route.
`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.
`HttpHost` `getProxyHost()` Obtains the first proxy host.
`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(HttpHost target,
                     InetAddress local,
                     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(HttpHost target,
                     InetAddress local,
                     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(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(HttpHost target)

  Creates a new direct insecure route.

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

### HttpRoute

    public HttpRoute(HttpHost target,
                     InetAddress local,
                     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

Method Detail

### getTargetHost

    public final HttpHost getTargetHost()

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

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

### getLocalAddress

    public final 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`

### getHopCount

    public final 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 final 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 final 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 final 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 final 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 final 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 final 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 final 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 final 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 final int hashCode()

  Generates a hash code for this route.

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

### toString

    public final 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`

Copyright © 1999-2011 The Apache Software Foundation. All Rights Reserved.