Class HttpRoute

java.lang.Object
org.apache.http.conn.routing.HttpRoute
All Implemented Interfaces:
Cloneable, RouteInfo

@Contract(threading=IMMUTABLE) public final class HttpRoute extends Object implements RouteInfo, Cloneable
The route for a request.
Since:
4.0
  • Constructor Details

    • 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
    • HttpRoute

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

    • 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
    • getLocalSocketAddress

      public final InetSocketAddress getLocalSocketAddress()
    • 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
      Throws:
      CloneNotSupportedException