## org.apache.http.impl.conn
Class ProxySelectorRoutePlanner

    java.lang.Object
      org.apache.http.impl.conn.ProxySelectorRoutePlanner

All Implemented Interfaces:
  HttpRoutePlanner

    @NotThreadSafe
    public class ProxySelectorRoutePlanner

extends Object
implements HttpRoutePlanner

Default implementation of an `HttpRoutePlanner`. This implementation is based on `ProxySelector`. By default, it will pick up the proxy settings of the JVM, either from system properties or from the browser running the application. Additionally, it interprets some `parameters`, though not the `DEFAULT_PROXY`.

The following parameters can be used to customize the behavior of this class:

- `ConnRoutePNames.LOCAL_ADDRESS`
- `ConnRoutePNames.FORCED_ROUTE`

Since:
  4.0

Field Summary
`protected ProxySelector` `proxySelector` The proxy selector to use, or `null` for system default.
`protected SchemeRegistry` `schemeRegistry` The scheme registry.

Constructor Summary
`ProxySelectorRoutePlanner(SchemeRegistry schreg, ProxySelector prosel)` Creates a new proxy selector route planner.

Method Summary
`protected Proxy` `chooseProxy(List<Proxy> proxies, HttpHost target, HttpRequest request, HttpContext context)` Chooses a proxy from a list of available proxies.
`protected HttpHost` `determineProxy(HttpHost target, HttpRequest request, HttpContext context)` Determines a proxy for the given target.
`HttpRoute` `determineRoute(HttpHost target, HttpRequest request, HttpContext context)` Determines the route for a request.
`protected String` `getHost(InetSocketAddress isa)` Obtains a host from an `InetSocketAddress`.
`ProxySelector` `getProxySelector()` Obtains the proxy selector to use.
`void` `setProxySelector(ProxySelector prosel)` Sets the proxy selector to use.

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Field Detail

### schemeRegistry

    protected final SchemeRegistry schemeRegistry

  The scheme registry.

### proxySelector

    protected ProxySelector proxySelector

  The proxy selector to use, or `null` for system default.

Constructor Detail

### ProxySelectorRoutePlanner

    public ProxySelectorRoutePlanner(SchemeRegistry schreg,
                                     ProxySelector prosel)

  Creates a new proxy selector route planner.

  Parameters:
    `schreg` - the scheme registry
    `prosel` - the proxy selector, or `null` for the system default

Method Detail

### getProxySelector

    public ProxySelector getProxySelector()

  Obtains the proxy selector to use.

  Returns:
    the proxy selector, or `null` for the system default

### setProxySelector

    public void setProxySelector(ProxySelector prosel)

  Sets the proxy selector to use.

  Parameters:
    `prosel` - the proxy selector, or `null` to use the system default

### determineRoute

    public HttpRoute determineRoute(HttpHost target,
                                    HttpRequest request,
                                    HttpContext context)
                             throws HttpException

  Description copied from interface: `HttpRoutePlanner`
  Determines the route for a request.

  Specified by:
    `determineRoute` in interface `HttpRoutePlanner`
  Parameters:
    `target` - the target host for the request. Implementations may accept `null` if they can still determine a route, for example to a default target or by inspecting the request.
    `request` - the request to execute
    `context` - the context to use for the subsequent execution. Implementations may accept `null`.
  Returns:
    the route that the request should take
  Throws:
    `HttpException` - in case of a problem

### determineProxy

    protected HttpHost determineProxy(HttpHost target,
                                      HttpRequest request,
                                      HttpContext context)
                               throws HttpException

  Determines a proxy for the given target.

  Parameters:
    `target` - the planned target, never `null`
    `request` - the request to be sent, never `null`
    `context` - the context, or `null`
  Returns:
    the proxy to use, or `null` for a direct route
  Throws:
    `HttpException` - in case of system proxy settings that cannot be handled

### getHost

    protected String getHost(InetSocketAddress isa)

  Obtains a host from an `InetSocketAddress`.

  Parameters:
    `isa` - the socket address
  Returns:
    a host string, either as a symbolic name or as a literal IP address string
    (TODO: determine format for IPv6 addresses, with or without [brackets])

### chooseProxy

    protected Proxy chooseProxy(List<Proxy> proxies,
                                HttpHost target,
                                HttpRequest request,
                                HttpContext context)

  Chooses a proxy from a list of available proxies. The default implementation just picks the first non-SOCKS proxy from the list. If there are only SOCKS proxies, `Proxy.NO_PROXY` is returned. Derived classes may implement more advanced strategies, such as proxy rotation if there are multiple options.

  Parameters:
    `proxies` - the list of proxies to choose from, never `null` or empty
    `target` - the planned target, never `null`
    `request` - the request to be sent, never `null`
    `context` - the context, or `null`
  Returns:
    a proxy type

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