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

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

Introduction

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

Prototype

public static RequestConfig.Builder copy(final RequestConfig config) 

Source Link

Usage

From source file:io.mandrel.requests.http.ApacheHttpRequester.java

public HttpUriRequest prepareRequest(Uri uri, Spider spider) {
    Builder builder = RequestConfig.copy(defaultRequestConfig);

    HttpGet request = new HttpGet(uri.toURI());

    // Add headers, cookies and ohter stuff
    if (headers() != null) {
        headers().forEach(header -> {
            if (header != null) {
                request.addHeader(header.getName(), header.getValue());
            }//from w  w  w.j  a  v a  2  s.c o  m
        });
    }

    HttpParams params = new BasicHttpParams();
    if (params() != null) {
        params().forEach(param -> {
            if (param != null) {
                params.setParameter(param.getName(), param.getValue());
            }
        });
    }
    request.setParams(params);

    // Configure the user -agent
    String userAgent = userAgentProvisionner().get(uri.toString(), spider);
    if (Strings.isNullOrEmpty(userAgent)) {
        request.addHeader(HttpHeaders.USER_AGENT, userAgent);
    }

    // Configure the proxy
    ProxyServer proxy = proxyServersSource().findProxy(spider);
    if (proxy != null) {
        // TODO Auth!
        HttpHost proxyHost = new HttpHost(proxy.getHost(), proxy.getPort(), proxy.getProtocol().getProtocol());
        builder.setProxy(proxyHost);
    }

    request.setConfig(builder.build());
    return request;
}

From source file:com.spotify.docker.client.DefaultDockerClient.java

/**
 * Create a new client using the configuration of the builder.
 *
 * @param builder DefaultDockerClient builder
 */// w  w  w . j  a  v a2s .co m
protected DefaultDockerClient(final Builder builder) {
    URI originalUri = checkNotNull(builder.uri, "uri");
    this.apiVersion = builder.apiVersion();

    if ((builder.dockerCertificates != null) && !originalUri.getScheme().equals("https")) {
        throw new IllegalArgumentException(
                "An HTTPS URI for DOCKER_HOST must be provided to use Docker client certificates");
    }

    if (originalUri.getScheme().equals(UNIX_SCHEME)) {
        this.uri = UnixConnectionSocketFactory.sanitizeUri(originalUri);
    } else {
        this.uri = originalUri;
    }

    final PoolingHttpClientConnectionManager cm = getConnectionManager(builder);
    final PoolingHttpClientConnectionManager noTimeoutCm = getConnectionManager(builder);

    final RequestConfig requestConfig = RequestConfig.custom()
            .setConnectionRequestTimeout((int) builder.connectTimeoutMillis)
            .setConnectTimeout((int) builder.connectTimeoutMillis)
            .setSocketTimeout((int) builder.readTimeoutMillis).build();

    final ClientConfig config = DEFAULT_CONFIG.connectorProvider(new ApacheConnectorProvider())
            .property(ApacheClientProperties.CONNECTION_MANAGER, cm)
            .property(ApacheClientProperties.REQUEST_CONFIG, requestConfig);

    this.authConfig = builder.authConfig;

    this.client = ClientBuilder.newClient(config);

    // ApacheConnector doesn't respect per-request timeout settings.
    // Workaround: instead create a client with infinite read timeout,
    // and use it for waitContainer, stopContainer, attachContainer, logs, and build
    final RequestConfig noReadTimeoutRequestConfig = RequestConfig.copy(requestConfig)
            .setSocketTimeout((int) NO_TIMEOUT).build();
    this.noTimeoutClient = ClientBuilder.newBuilder().withConfig(config)
            .property(ApacheClientProperties.CONNECTION_MANAGER, noTimeoutCm)
            .property(ApacheClientProperties.REQUEST_CONFIG, noReadTimeoutRequestConfig).build();
}

From source file:com.gooddata.GoodData.java

private HttpClientBuilder createHttpClientBuilder(final GoodDataSettings settings) {
    final PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
    connectionManager.setDefaultMaxPerRoute(settings.getMaxConnections());
    connectionManager.setMaxTotal(settings.getMaxConnections());

    final SocketConfig.Builder socketConfig = SocketConfig.copy(SocketConfig.DEFAULT);
    socketConfig.setSoTimeout(settings.getSocketTimeout());
    connectionManager.setDefaultSocketConfig(socketConfig.build());

    final RequestConfig.Builder requestConfig = RequestConfig.copy(RequestConfig.DEFAULT);
    requestConfig.setConnectTimeout(settings.getConnectionTimeout());
    requestConfig.setConnectionRequestTimeout(settings.getConnectionRequestTimeout());
    requestConfig.setSocketTimeout(settings.getSocketTimeout());

    return HttpClientBuilder.create()
            .setUserAgent(StringUtils.isNotBlank(settings.getUserAgent())
                    ? String.format("%s %s", settings.getUserAgent(), getUserAgent())
                    : getUserAgent())/* w w  w .  j a  v a  2  s. c  o  m*/
            .setConnectionManager(connectionManager).setDefaultRequestConfig(requestConfig.build());
}

From source file:com.wudaosoft.net.httpclient.Request.java

/**
 * //from w ww .  j  av  a 2 s.c  o m
 * @param workerBuilder
 * @param responseHandler
 * @return
 * @throws Exception
 */
public <T> T doRequest(WorkerBuilder workerBuilder, ResponseHandler<T> responseHandler) throws Exception {

    String method = workerBuilder.getMethod();
    String url = workerBuilder.getUrl();

    Args.notNull(workerBuilder, "WorkerBuilder");
    Args.notEmpty(method, "WorkerBuilder.getMethod()");
    Args.notEmpty(url, "WorkerBuilder.getUrl()");
    Args.notNull(responseHandler, "responseHandler");

    //      if(!workerBuilder.isAnyHost()) {
    if (!isFullUrl(url)) {
        //         notFullUrl(url);
        Args.notEmpty(hostConfig.getHostUrl(), "HostConfig.getHostUrl()");
        url = hostConfig.getHostUrl() + url;
    }

    Charset charset = hostConfig.getCharset() == null ? Consts.UTF_8 : hostConfig.getCharset();
    String stringBody = workerBuilder.getStringBody();
    File fileBody = workerBuilder.getFileBody();
    InputStream streamBody = workerBuilder.getStreamBody();
    Map<String, String> params = workerBuilder.getParameters();

    String contentType = null;

    if (responseHandler instanceof JsonResponseHandler) {
        contentType = MediaType.APPLICATION_JSON_VALUE;
    } else if (responseHandler instanceof SAXSourceResponseHandler
            || responseHandler instanceof XmlResponseHandler) {
        contentType = MediaType.APPLICATION_XML_VALUE;
    } else if (responseHandler instanceof FileResponseHandler || responseHandler instanceof ImageResponseHandler
            || responseHandler instanceof OutputStreamResponseHandler) {
        contentType = MediaType.ALL_VALUE;
    } else if (responseHandler instanceof NoResultResponseHandler) {
        contentType = ((NoResultResponseHandler) responseHandler).getContentType().getMimeType();
    } else {
        contentType = MediaType.TEXT_PLAIN_VALUE;
    }

    RequestBuilder requestBuilder = RequestBuilder.create(method).setCharset(charset).setUri(url);

    if (stringBody != null) {

        StringEntity reqEntity = new StringEntity(stringBody, charset);
        reqEntity.setContentType(contentType + ";charset=" + charset.name());
        requestBuilder.setEntity(reqEntity);

    } else if (fileBody != null || streamBody != null) {

        String filename = workerBuilder.getFilename();

        MultipartEntityBuilder reqEntity = MultipartEntityBuilder.create().setLaxMode();

        if (fileBody != null) {
            Args.check(fileBody.isFile(), "fileBody must be a file");
            Args.check(fileBody.canRead(), "fileBody must be readable");

            if (filename == null && streamBody == null)
                filename = fileBody.getName();

            FileBody bin = new FileBody(fileBody, ContentType.APPLICATION_OCTET_STREAM,
                    streamBody != null ? fileBody.getName() : filename);
            reqEntity.addPart(workerBuilder.getFileFieldName(), bin);
        }

        Args.notEmpty(filename, "filename");

        if (streamBody != null)
            reqEntity.addBinaryBody(workerBuilder.getFileFieldName(), streamBody,
                    ContentType.APPLICATION_OCTET_STREAM, filename);

        buildParameters(reqEntity, params, charset);

        requestBuilder.setEntity(reqEntity.build());
    }

    if (fileBody == null && streamBody == null) {
        buildParameters(requestBuilder, params);
    }

    if (workerBuilder.getReadTimeout() > -1) {

        requestBuilder.setConfig(RequestConfig.copy(this.hostConfig.getRequestConfig())
                .setSocketTimeout(workerBuilder.getReadTimeout()).build());
    }

    HttpUriRequest httpRequest = ParameterRequestBuilder.build(requestBuilder);

    setAcceptHeader(httpRequest, contentType);

    if (workerBuilder.isAjax())
        setAjaxHeader(httpRequest);

    HttpClientContext context = workerBuilder.getContext();
    if (context == null)
        context = defaultHttpContext;

    T result = getHttpClient().execute(httpRequest, responseHandler, context);

    if (log.isDebugEnabled()) {
        log.debug(String.format("Send data to path:[%s]\"%s\". result: %s", method, url, result));
    }

    return result;
}

From source file:org.apache.tamaya.etcd.EtcdAccessor.java

/**
 * Deletes a given key. The response is as follows:
 * //from  w w  w. ja  v a 2 s.  c  om
 * <pre>
 *     _key.source=[etcd]http://127.0.0.1:4001
 *     _key.createdIndex=12
 *     _key.modifiedIndex=34
 *     _key.ttl=300
 *     _key.expiry=...
 *      // optional
 *     _key.prevNode.createdIndex=12
 *     _key.prevNode.modifiedIndex=34
 *     _key.prevNode.ttl=300
 *     _key.prevNode.expiration=...
 *     _key.prevNode.value=...
 * </pre>
 *
 * @param key the key to be deleted.
 * @return the response mpas as described above.
 */
public Map<String, String> delete(String key) {
    final Map<String, String> result = new HashMap<>();
    try {
        final HttpDelete delete = new HttpDelete(serverURL + "/v2/keys/" + key);
        delete.setConfig(RequestConfig.copy(RequestConfig.DEFAULT).setSocketTimeout(socketTimeout)
                .setConnectionRequestTimeout(timeout).setConnectTimeout(connectTimeout).build());
        try (CloseableHttpResponse response = httpclient.execute(delete)) {
            if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                final HttpEntity entity = response.getEntity();
                final JsonReader reader = readerFactory
                        .createReader(new StringReader(EntityUtils.toString(entity)));
                final JsonObject o = reader.readObject();
                final JsonObject node = o.getJsonObject("node");
                if (node.containsKey("createdIndex")) {
                    result.put("_" + key + ".createdIndex", String.valueOf(node.getInt("createdIndex")));
                }
                if (node.containsKey("modifiedIndex")) {
                    result.put("_" + key + ".modifiedIndex", String.valueOf(node.getInt("modifiedIndex")));
                }
                if (node.containsKey("expiration")) {
                    result.put("_" + key + ".expiration", String.valueOf(node.getString("expiration")));
                }
                if (node.containsKey("ttl")) {
                    result.put("_" + key + ".ttl", String.valueOf(node.getInt("ttl")));
                }
                parsePrevNode(key, result, o);
                EntityUtils.consume(entity);
            }
        }
    } catch (final Exception e) {
        LOG.log(Level.INFO, "Error deleting key '" + key + "' from etcd: " + serverURL, e);
        result.put("_ERROR", "Error deleting '" + key + "' from etcd: " + serverURL + ": " + e.toString());
    }
    return result;
}

From source file:org.sdr.webrec.core.WebRec.java

private void initParameters() {

    // initialize HTTP parameters
    params = new BasicHttpParams();
    ConnManagerParams.setMaxTotalConnections(params, 100);
    HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);

    httpclient = new DefaultHttpClient(cm, params);

    //TODO: CloseableHttpClient httpclient = HttpClients.createDefault();

    //set proxy if available in settings
    if (settings.getProxyHost() != null && settings.getProxyHost().length() > 0) {
        HttpHost proxy = new HttpHost(settings.getProxyHost(), settings.getProxyPort());
        httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

        //set authentication to proxy is available is settings
        if (settings.getProxyUserName() != null && settings.getProxyUserName().length() > 0
                && settings.getProxyPasswd() != null) {
            httpclient.getCredentialsProvider().setCredentials(
                    new AuthScope(settings.getProxyHost(), settings.getProxyPort()),
                    new UsernamePasswordCredentials(settings.getProxyUserName(), settings.getProxyPasswd()));
            LOGGER.debug("autentication for proxy on");
        }/*from   w w w.  ja v  a2 s . c  o m*/

    }

    // initialize scheme registry 
    schemeRegistry = new SchemeRegistry();
    schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
    schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));

    // Create an HttpClient with the ThreadSafeClientConnManager.
    // This connection manager must be used if more than one thread will
    // be using the HttpClient.
    cm = new ThreadSafeClientConnManager(params, schemeRegistry);

    httpclient.setKeepAliveStrategy(new ConnectionKeepAliveStrategy() {

        public long getKeepAliveDuration(HttpResponse response, HttpContext context) {
            // Honor 'keep-alive' header
            HeaderElementIterator it = new BasicHeaderElementIterator(
                    response.headerIterator(HTTP.CONN_KEEP_ALIVE));
            while (it.hasNext()) {
                HeaderElement he = it.nextElement();
                String param = he.getName();
                String value = he.getValue();
                if (value != null && param.equalsIgnoreCase("timeout")) {
                    try {
                        return Long.parseLong(value);
                    } catch (NumberFormatException ignore) {

                    }
                }
            }
            //otherwise keep alive for 30 seconds
            return 30 * 1000;
        }

    });

    httpget = null;

    httpclient = new DefaultHttpClient(cm, params);

    // Create global request configuration
    RequestConfig defaultRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BEST_MATCH)
            .setExpectContinueEnabled(true).setStaleConnectionCheckEnabled(settings.isKeepConnectionAlive())
            .setTargetPreferredAuthSchemes(Arrays.asList(AuthSchemes.NTLM, AuthSchemes.DIGEST))
            .setProxyPreferredAuthSchemes(Arrays.asList(AuthSchemes.BASIC)).build();

    requestConfig = RequestConfig.copy(defaultRequestConfig).setSocketTimeout(timeout)
            .setConnectTimeout(timeout).setConnectionRequestTimeout(timeout).build();

}