Example usage for org.apache.http.client.config RequestConfig getConnectTimeout

List of usage examples for org.apache.http.client.config RequestConfig getConnectTimeout

Introduction

In this page you can find the example usage for org.apache.http.client.config RequestConfig getConnectTimeout.

Prototype

public int getConnectTimeout() 

Source Link

Document

Determines the timeout in milliseconds until a connection is established.

Usage

From source file:io.cloudslang.content.httpclient.build.RequestConfigBuilderTest.java

@Test
public void buildProxyRoute() throws URISyntaxException, HttpException {
    RequestConfig reqConfig = requestConfigBuilder.setProxyHost("myproxy.com").setProxyPort("80")
            .setSocketTimeout("-2").setConnectionTimeout("-2").setFollowRedirects("false").buildRequestConfig();
    assertNotNull(reqConfig);/*from www  .  j  a  va 2s  .  c o  m*/
    assertFalse(reqConfig.isRedirectsEnabled());
    assertEquals("-2", String.valueOf(reqConfig.getConnectTimeout()));
    assertEquals("-2", String.valueOf(reqConfig.getSocketTimeout()));
    assertNotNull(reqConfig.getProxy());
    assertEquals("myproxy.com", reqConfig.getProxy().getHostName());
    assertEquals("80", String.valueOf(reqConfig.getProxy().getPort()));
}

From source file:org.apache.metron.stellar.dsl.functions.RestFunctionsTest.java

/**
 * The REST_GET function should properly set the HttpClient timeout settings and proxy
 *//* ww  w. java2 s .  c o  m*/
@Test
public void restGetShouldGetRequestConfig() {
    RestFunctions.RestGet restGet = new RestFunctions.RestGet();

    {
        RequestConfig actual = restGet.getRequestConfig(new RestConfig(), Optional.empty());
        RequestConfig expected = RequestConfig.custom().build();

        assertEquals(expected.getConnectTimeout(), actual.getConnectTimeout());
        assertEquals(expected.getConnectionRequestTimeout(), actual.getConnectionRequestTimeout());
        assertEquals(expected.getSocketTimeout(), actual.getSocketTimeout());
        assertEquals(expected.getProxy(), actual.getProxy());
    }

    {
        RestConfig restConfig = new RestConfig();
        restConfig.put(CONNECT_TIMEOUT, 1);
        restConfig.put(CONNECTION_REQUEST_TIMEOUT, 2);
        restConfig.put(SOCKET_TIMEOUT, 3);
        HttpHost proxy = new HttpHost("localhost", proxyRule.getHttpPort());
        Optional<HttpHost> proxyOptional = Optional.of(proxy);

        RequestConfig actual = restGet.getRequestConfig(restConfig, proxyOptional);
        RequestConfig expected = RequestConfig.custom().setConnectTimeout(1).setConnectionRequestTimeout(2)
                .setSocketTimeout(3).setProxy(proxy).build();

        assertEquals(expected.getConnectTimeout(), actual.getConnectTimeout());
        assertEquals(expected.getConnectionRequestTimeout(), actual.getConnectionRequestTimeout());
        assertEquals(expected.getSocketTimeout(), actual.getSocketTimeout());
        assertEquals(expected.getProxy(), actual.getProxy());
    }

}

From source file:br.com.autonomiccs.apacheCloudStack.client.ApacheCloudStackClientTest.java

private void testRequestConfig(final RequestConfig config, final int timeout) {
    Assert.assertEquals(config.getConnectTimeout(), timeout * (int) DateUtils.MILLIS_PER_SECOND);
    Assert.assertEquals(config.getConnectionRequestTimeout(), timeout * (int) DateUtils.MILLIS_PER_SECOND);
    Assert.assertEquals(config.getSocketTimeout(), timeout * (int) DateUtils.MILLIS_PER_SECOND);
}

From source file:com.lehman.ic9.net.httpClient.java

/**
 * Gets the connection timeout in milliseconds.
 * @return An int with the connection timeout.
 *//*from  w  w w . j av  a2 s  .  c om*/
public int getConnectTimeout() {
    RequestConfig rc = this.rcb.build();
    return rc.getConnectTimeout();
}

From source file:org.sonatype.nexus.plugins.crowd.client.rest.RestClient.java

RestClient(CrowdPluginConfiguration config) throws URISyntaxException {
    crowdServer = new URI(config.getCrowdServerUrl()).resolve("rest/usermanagement/1/");

    crowdCreds = new UsernamePasswordCredentials(config.getApplicationName(), config.getApplicationPassword());

    // configure the http client
    RequestConfig.Builder reqConfigBuilder = RequestConfig.custom().setAuthenticationEnabled(true)
            .setConnectTimeout(config.getHttpTimeout()).setSocketTimeout(config.getHttpTimeout());

    cm = new PoolingHttpClientConnectionManager();
    cm.setMaxTotal(config.getHttpMaxConnections());
    cm.setDefaultMaxPerRoute(config.getHttpMaxConnections());

    // proxy settings
    CredentialsProvider credsProvider = new BasicCredentialsProvider();
    if (StringUtils.isNotBlank(config.getHttpProxyHost()) && config.getHttpProxyPort() > 0) {
        HttpHost proxy = new HttpHost(config.getHttpProxyHost(), config.getHttpProxyPort());
        reqConfigBuilder.setProxy(proxy);

        if (config.getHttpProxyUsername() != null && config.getHttpProxyPassword() != null) {
            credsProvider.setCredentials(new AuthScope(proxy), new UsernamePasswordCredentials(
                    config.getHttpProxyUsername(), config.getHttpProxyPassword()));
        }/*from  w ww .  j  ava 2s . c  om*/
    }

    RequestConfig reqConfig = reqConfigBuilder.build();
    HttpClientBuilder hcBuilder = HttpClients.custom().setMaxConnPerRoute(config.getHttpMaxConnections())
            .setMaxConnTotal(config.getHttpMaxConnections()).setConnectionManager(cm)
            .setDefaultCredentialsProvider(credsProvider).setDefaultRequestConfig(reqConfig);

    // handling of compressed responses
    hcBuilder.addInterceptorLast(new CompressedHttpResponseInterceptor());

    client = hcBuilder.build();

    if (LOG.isDebugEnabled()) {
        LOG.debug("HTTP Client config");
        LOG.debug(config.getCrowdServerUrl());
        LOG.debug("PROPERTY_THREADPOOL_SIZE:" + cm.getMaxTotal());
        LOG.debug("PROPERTY_READ_TIMEOUT:" + reqConfig.getSocketTimeout());
        LOG.debug("PROPERTY_CONNECT_TIMEOUT:" + reqConfig.getConnectTimeout());
        if (reqConfig.getProxy() != null) {
            LOG.debug("PROPERTY_PROXY_URI:" + reqConfig.getProxy().toString());
        }
        LOG.debug("Crowd application name:" + config.getApplicationName());
    }
}

From source file:org.apache.http.impl.execchain.MainClientExec.java

/**
 * Establishes the target route.//w ww . j a v  a  2 s .c o m
 */
void establishRoute(final AuthState proxyAuthState, final HttpClientConnection managedConn,
        final HttpRoute route, final HttpRequest request, final HttpClientContext context)
        throws HttpException, IOException {
    final RequestConfig config = context.getRequestConfig();
    final int timeout = config.getConnectTimeout();
    final RouteTracker tracker = new RouteTracker(route);
    int step;
    do {
        final HttpRoute fact = tracker.toRoute();
        step = this.routeDirector.nextStep(route, fact);

        switch (step) {

        case HttpRouteDirector.CONNECT_TARGET:
            this.connManager.connect(managedConn, route, timeout > 0 ? timeout : 0, context);
            tracker.connectTarget(route.isSecure());
            break;
        case HttpRouteDirector.CONNECT_PROXY:
            this.connManager.connect(managedConn, route, timeout > 0 ? timeout : 0, context);
            final HttpHost proxy = route.getProxyHost();
            tracker.connectProxy(proxy, false);
            break;
        case HttpRouteDirector.TUNNEL_TARGET: {
            final boolean secure = createTunnelToTarget(proxyAuthState, managedConn, route, request, context);
            this.log.debug("Tunnel to target created.");
            tracker.tunnelTarget(secure);
        }
            break;

        case HttpRouteDirector.TUNNEL_PROXY: {
            // The most simple example for this case is a proxy chain
            // of two proxies, where P1 must be tunnelled to P2.
            // route: Source -> P1 -> P2 -> Target (3 hops)
            // fact:  Source -> P1 -> Target       (2 hops)
            final int hop = fact.getHopCount() - 1; // the hop to establish
            final boolean secure = createTunnelToProxy(route, hop, context);
            this.log.debug("Tunnel to proxy created.");
            tracker.tunnelProxy(route.getHopTarget(hop), secure);
        }
            break;

        case HttpRouteDirector.LAYER_PROTOCOL:
            this.connManager.upgrade(managedConn, route, context);
            tracker.layerProtocol(route.isSecure());
            break;

        case HttpRouteDirector.UNREACHABLE:
            throw new HttpException(
                    "Unable to establish route: " + "planned = " + route + "; current = " + fact);
        case HttpRouteDirector.COMPLETE:
            this.connManager.routeComplete(managedConn, route, context);
            break;
        default:
            throw new IllegalStateException("Unknown step indicator " + step + " from RouteDirector.");
        }

    } while (step > HttpRouteDirector.COMPLETE);
}

From source file:org.apache.http.impl.execchain.MainClientExec.java

/**
 * Creates a tunnel to the target server.
 * The connection must be established to the (last) proxy.
 * A CONNECT request for tunnelling through the proxy will
 * be created and sent, the response received and checked.
 * This method does <i>not</i> update the connection with
 * information about the tunnel, that is left to the caller.
 *///from www . j a  v  a  2s .co m
private boolean createTunnelToTarget(final AuthState proxyAuthState, final HttpClientConnection managedConn,
        final HttpRoute route, final HttpRequest request, final HttpClientContext context)
        throws HttpException, IOException {

    final RequestConfig config = context.getRequestConfig();
    final int timeout = config.getConnectTimeout();

    final HttpHost target = route.getTargetHost();
    final HttpHost proxy = route.getProxyHost();
    HttpResponse response;

    final String authority = target.toHostString();
    final HttpRequest connect = new BasicHttpRequest("CONNECT", authority, request.getProtocolVersion());

    this.requestExecutor.preProcess(connect, this.proxyHttpProcessor, context);

    for (;;) {
        if (!managedConn.isOpen()) {
            this.connManager.connect(managedConn, route, timeout > 0 ? timeout : 0, context);
        }

        connect.removeHeaders(AUTH.PROXY_AUTH_RESP);
        this.authenticator.generateAuthResponse(connect, proxyAuthState, context);

        response = this.requestExecutor.execute(connect, managedConn, context);

        final int status = response.getStatusLine().getStatusCode();
        if (status < 200) {
            throw new HttpException("Unexpected response to CONNECT request: " + response.getStatusLine());
        }

        if (config.isAuthenticationEnabled()) {
            if (this.authenticator.isAuthenticationRequested(proxy, response, this.proxyAuthStrategy,
                    proxyAuthState, context)) {
                if (this.authenticator.handleAuthChallenge(proxy, response, this.proxyAuthStrategy,
                        proxyAuthState, context)) {
                    // Retry request
                    if (this.reuseStrategy.keepAlive(response, context)) {
                        this.log.debug("Connection kept alive");
                        // Consume response content
                        final HttpEntity entity = response.getEntity();
                        EntityUtils.consume(entity);
                    } else {
                        managedConn.close();
                    }
                } else {
                    break;
                }
            } else {
                break;
            }
        }
    }

    final int status = response.getStatusLine().getStatusCode();

    if (status > 299) {

        // Buffer response content
        final HttpEntity entity = response.getEntity();
        if (entity != null) {
            response.setEntity(new BufferedHttpEntity(entity));
        }

        managedConn.close();
        throw new TunnelRefusedException("CONNECT refused by proxy: " + response.getStatusLine(), response);
    }

    // How to decide on security of the tunnelled connection?
    // The socket factory knows only about the segment to the proxy.
    // Even if that is secure, the hop to the target may be insecure.
    // Leave it to derived classes, consider insecure by default here.
    return false;
}

From source file:org.apache.http.impl.execchain.MinimalClientExec.java

public CloseableHttpResponse execute(final HttpRoute route, final HttpRequestWrapper request,
        final HttpClientContext context, final HttpExecutionAware execAware) throws IOException, HttpException {
    Args.notNull(route, "HTTP route");
    Args.notNull(request, "HTTP request");
    Args.notNull(context, "HTTP context");

    rewriteRequestURI(request, route);/*from w w w  . j av  a 2 s .com*/

    final ConnectionRequest connRequest = connManager.requestConnection(route, null);
    if (execAware != null) {
        if (execAware.isAborted()) {
            connRequest.cancel();
            throw new RequestAbortedException("Request aborted");
        } else {
            execAware.setCancellable(connRequest);
        }
    }

    final RequestConfig config = context.getRequestConfig();

    final HttpClientConnection managedConn;
    try {
        final int timeout = config.getConnectionRequestTimeout();
        managedConn = connRequest.get(timeout > 0 ? timeout : 0, TimeUnit.MILLISECONDS);
    } catch (final InterruptedException interrupted) {
        Thread.currentThread().interrupt();
        throw new RequestAbortedException("Request aborted", interrupted);
    } catch (final ExecutionException ex) {
        Throwable cause = ex.getCause();
        if (cause == null) {
            cause = ex;
        }
        throw new RequestAbortedException("Request execution failed", cause);
    }

    final ConnectionHolder releaseTrigger = new ConnectionHolder(log, connManager, managedConn);
    try {
        if (execAware != null) {
            if (execAware.isAborted()) {
                releaseTrigger.close();
                throw new RequestAbortedException("Request aborted");
            } else {
                execAware.setCancellable(releaseTrigger);
            }
        }

        if (!managedConn.isOpen()) {
            final int timeout = config.getConnectTimeout();
            this.connManager.connect(managedConn, route, timeout > 0 ? timeout : 0, context);
            this.connManager.routeComplete(managedConn, route, context);
        }
        final int timeout = config.getSocketTimeout();
        if (timeout >= 0) {
            managedConn.setSocketTimeout(timeout);
        }

        HttpHost target = null;
        final HttpRequest original = request.getOriginal();
        if (original instanceof HttpUriRequest) {
            final URI uri = ((HttpUriRequest) original).getURI();
            if (uri.isAbsolute()) {
                target = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme());
            }
        }
        if (target == null) {
            target = route.getTargetHost();
        }

        context.setAttribute(HttpCoreContext.HTTP_TARGET_HOST, target);
        context.setAttribute(HttpCoreContext.HTTP_REQUEST, request);
        context.setAttribute(HttpCoreContext.HTTP_CONNECTION, managedConn);
        context.setAttribute(HttpClientContext.HTTP_ROUTE, route);

        httpProcessor.process(request, context);
        final HttpResponse response = requestExecutor.execute(request, managedConn, context);
        httpProcessor.process(response, context);

        // The connection is in or can be brought to a re-usable state.
        if (reuseStrategy.keepAlive(response, context)) {
            // Set the idle duration of this connection
            final long duration = keepAliveStrategy.getKeepAliveDuration(response, context);
            releaseTrigger.setValidFor(duration, TimeUnit.MILLISECONDS);
            releaseTrigger.markReusable();
        } else {
            releaseTrigger.markNonReusable();
        }

        // check for entity, release connection if possible
        final HttpEntity entity = response.getEntity();
        if (entity == null || !entity.isStreaming()) {
            // connection not needed and (assumed to be) in re-usable state
            releaseTrigger.releaseConnection();
            return Proxies.enhanceResponse(response, null);
        } else {
            return Proxies.enhanceResponse(response, releaseTrigger);
        }
    } catch (final ConnectionShutdownException ex) {
        final InterruptedIOException ioex = new InterruptedIOException("Connection has been shut down");
        ioex.initCause(ex);
        throw ioex;
    } catch (final HttpException ex) {
        releaseTrigger.abortConnection();
        throw ex;
    } catch (final IOException ex) {
        releaseTrigger.abortConnection();
        throw ex;
    } catch (final RuntimeException ex) {
        releaseTrigger.abortConnection();
        throw ex;
    }
}

From source file:org.apache.http.impl.nio.client.AbstractClientExchangeHandler.java

final void requestConnection() {
    final HttpRoute route = this.routeRef.get();
    if (this.log.isDebugEnabled()) {
        this.log.debug("[exchange: " + this.id + "] Request connection for " + route);
    }// w  ww  .j  a v  a 2 s .  c  om

    discardConnection();

    this.validDurationRef.set(null);
    this.routeTrackerRef.set(null);
    this.routeEstablished.set(false);

    final Object userToken = this.localContext.getUserToken();
    final RequestConfig config = this.localContext.getRequestConfig();
    this.connmgr.requestConnection(route, userToken, config.getConnectTimeout(),
            config.getConnectionRequestTimeout(), TimeUnit.MILLISECONDS,
            new FutureCallback<NHttpClientConnection>() {

                @Override
                public void completed(final NHttpClientConnection managedConn) {
                    connectionAllocated(managedConn);
                }

                @Override
                public void failed(final Exception ex) {
                    connectionRequestFailed(ex);
                }

                @Override
                public void cancelled() {
                    connectionRequestCancelled();
                }

            });
}

From source file:org.springframework.cloud.netflix.zuul.filters.route.SimpleHostRoutingFilterTests.java

@Test
public void timeoutPropertiesAreApplied() {
    addEnvironment(this.context, "zuul.host.socket-timeout-millis=11000",
            "zuul.host.connect-timeout-millis=2100", "zuul.host.connection-request-timeout-millis=2500");
    setupContext();/*from  w  w w.  j av a  2  s.co m*/
    CloseableHttpClient httpClient = getFilter().newClient();
    Assertions.assertThat(httpClient).isInstanceOf(Configurable.class);
    RequestConfig config = ((Configurable) httpClient).getConfig();
    assertEquals(11000, config.getSocketTimeout());
    assertEquals(2100, config.getConnectTimeout());
    assertEquals(2500, config.getConnectionRequestTimeout());
}