List of usage examples for org.apache.http.impl.client HttpClientBuilder setProxy
public final HttpClientBuilder setProxy(final HttpHost proxy)
From source file:com.cloudbees.jenkins.plugins.bitbucket.server.client.BitbucketServerAPIClient.java
private void setClientProxyParams(String host, HttpClientBuilder builder) { Jenkins jenkins = Jenkins.getInstance(); ProxyConfiguration proxyConfig = null; if (jenkins != null) { proxyConfig = jenkins.proxy;/*from ww w .j a v a 2 s. co m*/ } final Proxy proxy; if (proxyConfig != null) { URI hostURI = URI.create(host); proxy = proxyConfig.createProxy(hostURI.getHost()); } else { proxy = Proxy.NO_PROXY; } if (proxy.type() != Proxy.Type.DIRECT) { final InetSocketAddress proxyAddress = (InetSocketAddress) proxy.address(); LOGGER.log(Level.FINE, "Jenkins proxy: {0}", proxy.address()); builder.setProxy(new HttpHost(proxyAddress.getHostName(), proxyAddress.getPort())); String username = proxyConfig.getUserName(); String password = proxyConfig.getPassword(); if (username != null && !"".equals(username.trim())) { LOGGER.fine("Using proxy authentication (user=" + username + ")"); CredentialsProvider credentialsProvider = new BasicCredentialsProvider(); credentialsProvider.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(username, password)); AuthCache authCache = new BasicAuthCache(); authCache.put(HttpHost.create(proxyAddress.getHostName()), new BasicScheme()); context = HttpClientContext.create(); context.setCredentialsProvider(credentialsProvider); context.setAuthCache(authCache); } } }
From source file:de.tudarmstadt.ukp.shibhttpclient.ShibHttpClient.java
/** * Create a new client (with an explicit proxy and possibly transparent authentication) * /* w w w. j a v a 2 s. c om*/ * @param aIdpUrl * the URL of the IdP. Should probably be something ending in "/SAML2/SOAP/ECP" * @param aUsername * the user name to log into the IdP. * @param aPassword * the password to log in to the IdP. * @param aProxy * if not {@code null}, use this proxy instead of the default system proxy (if any) * @param anyCert * if {@code true}, accept any certificate from any remote host. Otherwise, * certificates need to be installed in the JRE. * @param transparentAuth * if {@code true} (default), add a HttpRequestPostProcessor to transparently * authenticate. Otherwise, you must handle the authentication process yourself. */ public ShibHttpClient(String aIdpUrl, String aUsername, String aPassword, HttpHost aProxy, boolean anyCert, boolean transparentAuth) { setIdpUrl(aIdpUrl); setUsername(aUsername); setPassword(aPassword); // Use a pooling connection manager, because we'll have to do a call out to the IdP // while still being in a connection with the SP PoolingHttpClientConnectionManager connMgr; if (anyCert) { try { SSLContextBuilder builder = new SSLContextBuilder(); builder.loadTrustMaterial(null, new TrustSelfSignedStrategy()); Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder .<ConnectionSocketFactory>create().register("http", new PlainConnectionSocketFactory()) .register("https", new SSLConnectionSocketFactory(builder.build(), SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER)) .build(); connMgr = new PoolingHttpClientConnectionManager(socketFactoryRegistry); } catch (GeneralSecurityException e) { // There shouldn't be any of these exceptions, because we do not use an actual // keystore throw new IllegalStateException(e); } } else { connMgr = new PoolingHttpClientConnectionManager(); } connMgr.setMaxTotal(10); connMgr.setDefaultMaxPerRoute(5); // The client needs to remember the auth cookie cookieStore = new BasicCookieStore(); RequestConfig globalRequestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.BROWSER_COMPATIBILITY) .build(); // Let's throw all common client elements into one builder object HttpClientBuilder customClient = HttpClients.custom().setConnectionManager(connMgr) // The client needs to remember the auth cookie .setDefaultRequestConfig(globalRequestConfig).setDefaultCookieStore(cookieStore) // Add the ECP/PAOS headers - needs to be added first so the cookie we get from // the authentication can be handled by the RequestAddCookies interceptor later .addInterceptorFirst(new HttpRequestPreprocessor()); // Automatically log into IdP if transparent Shibboleth authentication handling is requested (default) if (transparentAuth) { customClient = customClient.addInterceptorFirst(new HttpRequestPostprocessor()); } // Build the client with/without proxy settings if (aProxy == null) { // use the proxy settings of the JVM, if specified client = customClient.setRoutePlanner(new SystemDefaultRoutePlanner(ProxySelector.getDefault())) .build(); } else { // use the explicit proxy client = customClient.setProxy(aProxy).build(); } parserPool = new BasicParserPool(); parserPool.setNamespaceAware(true); }
From source file:org.jenkinsci.plugins.fod.FoDAPI.java
private HttpClient getHttpClient() { final String METHOD_NAME = CLASS_NAME + ".getHttpClient"; PrintStream logger = FodBuilder.getLogger(); if (null == this.httpClient) { HttpClientBuilder builder = HttpClientBuilder.create(); if (null != proxyConfig) { String fodBaseUrl = null; if (null != this.baseUrl && !this.baseUrl.isEmpty()) { fodBaseUrl = this.baseUrl; } else { fodBaseUrl = PUBLIC_FOD_BASE_URL; }/*ww w.j av a2 s. c o m*/ Proxy proxy = proxyConfig.createProxy(fodBaseUrl); InetSocketAddress address = (InetSocketAddress) proxy.address(); HttpHost proxyHttpHost = new HttpHost(address.getHostName(), address.getPort(), proxy.address().toString().indexOf("https") != 0 ? "http" : "https"); builder.setProxy(proxyHttpHost); if (null != proxyConfig.getUserName() && !proxyConfig.getUserName().trim().equals("") && null != proxyConfig.getPassword() && !proxyConfig.getPassword().trim().equals("")) { Credentials credentials = new UsernamePasswordCredentials(proxyConfig.getUserName(), proxyConfig.getPassword()); AuthScope authScope = new AuthScope(address.getHostName(), address.getPort()); CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(authScope, credentials); builder.setDefaultCredentialsProvider(credsProvider); } logger.println(METHOD_NAME + ": using proxy configuration: " + proxyHttpHost.getSchemeName() + "://" + proxyHttpHost.getHostName() + ":" + proxyHttpHost.getPort()); } this.httpClient = builder.build(); } return this.httpClient; }
From source file:com.bosch.iot.things.example.historian.Controller.java
private synchronized CloseableHttpClient getHttpClient() { if (theHttpClient == null) { HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); // #### ONLY FOR TEST: Trust ANY certificate (self certified, any chain, ...) try {//from w ww . jav a 2s .c o m SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (chain, authType) -> true) .build(); httpClientBuilder.setSSLContext(sslContext); // #### ONLY FOR TEST: Do NOT verify hostname SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE); Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder .<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.getSocketFactory()) .register("https", sslConnectionSocketFactory).build(); PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager( socketFactoryRegistry); httpClientBuilder.setConnectionManager(httpClientConnectionManager); } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException ex) { java.util.logging.Logger.getLogger(Controller.class.getName()).log(Level.SEVERE, null, ex); } Properties config = getConfig(); if (config.getProperty("http.proxyHost") != null) { httpClientBuilder.setProxy(new HttpHost(config.getProperty("http.proxyHost"), Integer.parseInt(config.getProperty("http.proxyPort")))); } if (config.getProperty("http.proxyUser") != null) { CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(HttpHost.create(getConfig().getProperty("thingsServiceEndpointUrl"))), new UsernamePasswordCredentials(config.getProperty("http.proxyUser"), config.getProperty("http.proxyPwd"))); httpClientBuilder.setDefaultCredentialsProvider(credsProvider); } theHttpClient = httpClientBuilder.build(); } return theHttpClient; }
From source file:org.fao.geonet.utils.AbstractHttpRequest.java
protected ClientHttpResponse doExecute(final HttpRequestBase httpMethod) throws IOException { return requestFactory.execute(httpMethod, new Function<HttpClientBuilder, Void>() { @Nullable//from w ww. j av a2s.com @Override public Void apply(@Nonnull HttpClientBuilder input) { final BasicCredentialsProvider credentialsProvider = new BasicCredentialsProvider(); if (credentials != null) { final URI uri = httpMethod.getURI(); HttpHost hh = new HttpHost(uri.getHost(), uri.getPort(), uri.getScheme()); credentialsProvider.setCredentials(new AuthScope(hh), credentials); // Preemptive authentication if (isPreemptiveBasicAuth()) { // Create AuthCache instance AuthCache authCache = new BasicAuthCache(); // Generate BASIC scheme object and add it to the local auth cache BasicScheme basicAuth = new BasicScheme(); authCache.put(hh, basicAuth); // Add AuthCache to the execution context httpClientContext = HttpClientContext.create(); httpClientContext.setCredentialsProvider(credentialsProvider); httpClientContext.setAuthCache(authCache); } else { input.setDefaultCredentialsProvider(credentialsProvider); } } else { input.setDefaultCredentialsProvider(credentialsProvider); } if (useProxy) { final HttpHost proxy = new HttpHost(proxyHost, proxyPort); input.setProxy(proxy); if (proxyCredentials != null) { credentialsProvider.setCredentials(new AuthScope(proxy), proxyCredentials); } } input.setRedirectStrategy(new LaxRedirectStrategy()); return null; } }, this); }
From source file:com.bosch.cr.examples.jwt.CustomProxyServlet.java
private synchronized CloseableHttpClient getHttpClient() { if (httpClient == null) { try {// w ww. j a v a 2 s. c om final HttpClientBuilder httpClientBuilder = HttpClientBuilder.create(); // #### ONLY FOR TEST: Trust ANY certificate (self certified, any chain, ...) final SSLContext sslContext = new SSLContextBuilder() .loadTrustMaterial(null, (chain, authType) -> true).build(); httpClientBuilder.setSSLContext(sslContext); // #### ONLY FOR TEST: Do NOT verify hostname final SSLConnectionSocketFactory sslConnectionSocketFactory = new SSLConnectionSocketFactory( sslContext, NoopHostnameVerifier.INSTANCE); final Registry<ConnectionSocketFactory> socketFactoryRegistry = RegistryBuilder .<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.getSocketFactory()) .register("https", sslConnectionSocketFactory).build(); final PoolingHttpClientConnectionManager httpClientConnectionManager = new PoolingHttpClientConnectionManager( socketFactoryRegistry); httpClientBuilder.setConnectionManager(httpClientConnectionManager); final boolean proxyEnabled = configurationProperties .getPropertyAsBoolean(ConfigurationProperty.PROXY_ENABLED); if (proxyEnabled) { final String proxyHost = configurationProperties .getPropertyAsString(ConfigurationProperty.PROXY_HOST); final int proxyPort = configurationProperties .getPropertyAsInt(ConfigurationProperty.PROXY_PORT); final HttpHost proxy = new HttpHost(proxyHost, proxyPort); httpClientBuilder.setProxy(proxy); } httpClient = httpClientBuilder.build(); } catch (NoSuchAlgorithmException | KeyManagementException | KeyStoreException ex) { throw new RuntimeException(ex); } } return httpClient; }
From source file:com.clustercontrol.http.util.GetHttpResponse.java
private CloseableHttpClient getHttpClient() throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException { if (m_client == null) { List<Header> headers = new ArrayList<>(); HttpClientBuilder builder = HttpClients.custom().setDefaultCredentialsProvider(m_cledentialProvider) .setDefaultHeaders(headers); if (!this.m_needAuthSSLCert) { // SSL ?? TrustStrategy trustStrategy = new TrustStrategy() { @Override/*from w w w . j av a 2 s. c o m*/ public boolean isTrusted(X509Certificate[] chain, String authType) throws CertificateException { return true; } }; builder.setSSLSocketFactory(new SSLConnectionSocketFactory( new SSLContextBuilder().loadTrustMaterial(null, trustStrategy).build(), new NoopHostnameVerifier())); } RequestConfig requestConfig = RequestConfig.custom().setCookieSpec(CookieSpecs.DEFAULT) .setConnectTimeout(m_connectTimeout).setSocketTimeout(m_requestTimeout).build(); builder.setDefaultRequestConfig(requestConfig); if (m_proxyHost != null) { HttpHost proxy = new HttpHost(m_proxyHost, m_proxyPort, m_proxyScheme == null ? "https" : m_proxyScheme); if (m_proxyUser != null && m_proxyPassword != null) { m_cledentialProvider.setCredentials(new AuthScope(proxy.getHostName(), proxy.getPort()), new UsernamePasswordCredentials(m_proxyUser, m_proxyPassword)); } builder.setProxy(proxy); } if (m_userAgent != null) { headers.add(new BasicHeader(HTTP.USER_AGENT, m_userAgent)); } if (m_cancelProxyCache) { // ? // https://www.ipa.go.jp/security/awareness/vendor/programmingv2/contents/405.html headers.add(new BasicHeader("Cache-Control", "no-cache")); headers.add(new BasicHeader("Pragma", "no-cache")); } if (keepAlive) { headers.add(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE)); } else { headers.add(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE)); } m_client = builder.build(); } return m_client; }
From source file:com.clustercontrol.hub.session.FluentdTransferFactory.java
/** * ?????????//from ww w . j av a2 s . com * */ @Override public Transfer createTansfer(final TransferInfo info, final PropertyBinder binder) throws TransferException { // HTTP ????? TransferDestProp urlProp = null; TransferDestProp connectTimeoutProp = null; TransferDestProp requestTimeoutProp = null; for (TransferDestProp prop : info.getDestProps()) { switch (prop.getName()) { case prop_url: urlProp = prop; break; case prop_connect_timeout: connectTimeoutProp = prop; break; case prop_request_timeout: requestTimeoutProp = prop; break; default: logger.warn(String.format("createTansfer() : unknown property(%s)", prop.getValue())); break; } } if (urlProp == null || urlProp.getValue() == null) throw new TransferException(String.format("createTansfer() : Value of \"%s\" must be set.", prop_url)); if (!urlPattern.matcher(urlProp.getValue()).matches()) throw new TransferException( String.format("createTansfer() : invalid url format. url=%s", urlProp.getValue())); final String urlStr = urlProp.getValue(); Integer timeout; try { timeout = Integer.valueOf(connectTimeoutProp.getValue()); } catch (NumberFormatException e) { timeout = DEFAULT_CONNECT_TIMEOUT; logger.warn(String.format("createTansfer() : can't regognize connectTimeout(%s) as number.", connectTimeoutProp.getValue())); } catch (NullPointerException e) { timeout = DEFAULT_CONNECT_TIMEOUT; logger.warn(String.format( "createTansfer() : connectTimeout is null, then use default value as connectTimeout(%s).", timeout)); } final Integer connectTimeout = timeout; try { timeout = Integer.valueOf(requestTimeoutProp.getValue()); } catch (NumberFormatException e) { timeout = DEFAULT_REQUEST_TIMEOUT; logger.warn(String.format("createTansfer() : can't regognize requestTimeout(%s) as number.", requestTimeoutProp.getValue())); } catch (NullPointerException e) { timeout = DEFAULT_CONNECT_TIMEOUT; logger.warn(String.format( "createTansfer() : requestTimeout is null, then use default value as requestTimeout(%s).", timeout)); } final Integer requestTimeout = timeout; // ?? return new Transfer() { private static final int BUFF_SIZE = 1024 * 1024; private static final int BODY_MAX_SIZE = 5 * BUFF_SIZE; private CloseableHttpClient client = null; /* * ?? * */ @Override public TransferNumericData transferNumerics(Iterable<TransferNumericData> numerics, TrasferCallback<TransferNumericData> callback) throws TransferException { TransferNumericData lastPosition = null; for (TransferNumericData numeric : numerics) { ObjectNode root = JsonNodeFactory.instance.objectNode(); root.put("item_name", numeric.key.getItemName()); root.put("display_name", numeric.key.getDisplayName()); root.put("monitor_id", numeric.key.getMonitorId()); root.put("facility_id", numeric.key.getFacilityid()); root.put("time", numeric.data.getTime()); root.put("value", numeric.data.getValue()); root.put("position", numeric.data.getPosition()); String url = binder.bind(numeric.key, numeric.data, urlStr); String data = root.toString(); try { send(url, data); lastPosition = numeric; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_monitor(numeric.key.getMonitorId(), data, e, url); break; } } return lastPosition; } /* * ?? * */ @Override public TransferStringData transferStrings(Iterable<TransferStringData> strings, TrasferCallback<TransferStringData> callback) throws TransferException { TransferStringData lastPosition = null; for (TransferStringData string : strings) { ObjectNode root = JsonNodeFactory.instance.objectNode(); root.put("target_name", string.key.getTargetName()); root.put("monitor_id", string.key.getMonitorId()); root.put("facility_id", string.key.getFacilityId()); root.put("log_format_id", string.data.getLogformatId()); root.put("time", string.data.getTime()); root.put("source", string.data.getValue()); for (CollectDataTag t : string.data.getTagList()) { root.put(t.getKey(), t.getValue()); } root.put("position", string.data.getDataId()); String url = binder.bind(string.key, string.data, urlStr); String data = root.toString(); try { send(url, data); lastPosition = string; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_monitor(string.key.getMonitorId(), data, e, url); break; } } return lastPosition; } /* * ?? * */ @Override public JobSessionEntity transferJobs(Iterable<JobSessionEntity> sessions, TrasferCallback<JobSessionEntity> callback) throws TransferException { JobSessionEntity lastPosition = null; for (JobSessionEntity session : sessions) { ObjectNode sessionNode = JsonNodeFactory.instance.objectNode(); sessionNode.put("ssession_id", session.getSessionId()); sessionNode.put("job_id", session.getJobId()); sessionNode.put("jobunit_id", session.getJobunitId()); sessionNode.put("schedule_date", session.getScheduleDate()); sessionNode.put("position", session.getPosition()); ArrayNode jobArray = sessionNode.putArray("jobs"); for (JobSessionJobEntity job : session.getJobSessionJobEntities()) { ObjectNode jobNode = jobArray.addObject(); jobNode.put("job_id", job.getId().getJobId()); jobNode.put("jobunit_id", job.getId().getJobunitId()); if (job.getScopeText() != null) jobNode.put("scope_text", job.getScopeText()); if (job.getStatus() != null) jobNode.put("status", job.getStatus()); if (job.getStartDate() != null) jobNode.put("start_date", job.getStartDate()); if (job.getEndDate() != null) jobNode.put("end_date", job.getEndDate()); if (job.getEndValue() != null) jobNode.put("end_value", job.getEndValue()); if (job.getEndStatus() != null) jobNode.put("end_status", job.getEndStatus()); if (job.getResult() != null) jobNode.put("result", job.getResult()); if (job.getJobInfoEntity() != null) jobNode.put("job_type", job.getJobInfoEntity().getJobType()); if (!job.getJobSessionNodeEntities().isEmpty()) { ArrayNode nodeArray = jobNode.putArray("nodes"); for (JobSessionNodeEntity node : job.getJobSessionNodeEntities()) { ObjectNode nodeNode = nodeArray.addObject(); nodeNode.put("facility_id", node.getId().getFacilityId()); nodeNode.put("node_name", node.getNodeName()); nodeNode.put("status", node.getStatus()); nodeNode.put("start_date", node.getStartDate()); nodeNode.put("end_date", node.getEndDate()); nodeNode.put("end_value", node.getEndValue()); nodeNode.put("message", node.getMessage()); nodeNode.put("result", node.getResult()); nodeNode.put("start_date", node.getStartDate()); nodeNode.put("startup_time", node.getStartupTime()); nodeNode.put("instance_id", node.getInstanceId()); } } } String url = binder.bind(session, urlStr); String data = sessionNode.toString(); try { send(url, data); lastPosition = session; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_session(session.getSessionId(), data, e, url); break; } } return lastPosition; } /* * ?? * */ @Override public EventLogEntity transferEvents(Iterable<EventLogEntity> events, TrasferCallback<EventLogEntity> callback) throws TransferException { EventLogEntity lastPosition = null; for (EventLogEntity event : events) { ObjectNode eventNode = JsonNodeFactory.instance.objectNode(); eventNode.put("monitor_id", event.getId().getMonitorId()); eventNode.put("monitor_detail_id", event.getId().getMonitorDetailId()); eventNode.put("plugin_id", event.getId().getPluginId()); eventNode.put("generation_date", event.getGenerationDate()); eventNode.put("facility_id", event.getId().getFacilityId()); eventNode.put("scope_text", event.getScopeText()); eventNode.put("application", event.getApplication()); eventNode.put("message", event.getMessage()); eventNode.put("message_org", event.getMessageOrg()); eventNode.put("priority", event.getPriority()); eventNode.put("confirm_flg", event.getConfirmFlg()); eventNode.put("confirm_date", event.getCommentDate()); eventNode.put("confirm_user", event.getCommentUser()); eventNode.put("duplication_count", event.getDuplicationCount()); eventNode.put("output_date", event.getId().getOutputDate()); eventNode.put("inhibited_flg", event.getInhibitedFlg()); eventNode.put("comment_date", event.getCommentDate()); eventNode.put("comment_user", event.getCommentUser()); eventNode.put("comment", event.getComment()); eventNode.put("position", event.getPosition()); String url = binder.bind(event, urlStr); String data = eventNode.toString(); try { send(url, data); lastPosition = event; if (callback != null) callback.onTransferred(lastPosition); } catch (Exception e) { logger.warn(e.getMessage(), e); internalError_monitor(event.getId().getMonitorId(), data, e, url); break; } } return lastPosition; } /* * ID ?? * */ @Override public String getDestTypeId() { return transfer_id; } /* * Fluentd ?????? HttpClient ?? * ????????? * */ private CloseableHttpClient getHttpClient() { if (client == null) { client = createHttpClient(); } return client; } /* * Fluentd ?????? HttpClient ?? * */ private CloseableHttpClient createHttpClient() { String proxyHost = null; Integer proxyPort = null; CredentialsProvider cledentialProvider = null; List<String> ignoreHostList = new ArrayList<>(); try { // Hinemos ??? proxyHost = HinemosPropertyUtil.getHinemosPropertyStr("hub.fluentd.proxy.host", null); Long proxyPortLong = HinemosPropertyUtil.getHinemosPropertyNum("hub.fluentd.proxy.port", null); if (proxyPortLong != null) proxyPort = proxyPortLong.intValue(); if (proxyPort == null) proxyPort = 80; String proxyUser = HinemosPropertyUtil.getHinemosPropertyStr("hub.fluentd.proxy.user", null); String proxyPassword = HinemosPropertyUtil.getHinemosPropertyStr("hub.fluentd.proxy.password", null); if (proxyHost != null && proxyPort != null) { logger.debug( "initializing fluentd proxy : proxyHost = " + proxyHost + ", port = " + proxyPort); String ignoreHostStr = HinemosPropertyUtil .getHinemosPropertyStr("hub.fluentd.proxy.ignorehosts", null); if (ignoreHostStr != null) { ignoreHostList = Arrays.asList(ignoreHostStr.split(",")); } if (proxyUser != null && proxyPassword != null) { cledentialProvider = new BasicCredentialsProvider(); cledentialProvider.setCredentials(new AuthScope(proxyHost, proxyPort), new UsernamePasswordCredentials(proxyUser, proxyPassword)); } } } catch (Throwable t) { logger.warn("invalid proxy configuration.", t); proxyHost = null; proxyPort = null; cledentialProvider = null; ignoreHostList = Collections.emptyList(); } List<Header> headers = new ArrayList<>(); HttpClientBuilder builder = HttpClients.custom().setDefaultCredentialsProvider(cledentialProvider) .setDefaultHeaders(headers); Builder requestBuilder = RequestConfig.custom().setCookieSpec(CookieSpecs.DEFAULT); if (connectTimeout != null) requestBuilder.setConnectTimeout(connectTimeout); if (connectTimeout != null) requestBuilder.setSocketTimeout(requestTimeout); builder.setDefaultRequestConfig(requestBuilder.build()); if (proxyHost != null) { Matcher m = urlPattern.matcher(urlStr); if (!m.matches()) throw new InternalError(String.format("invalid url(%s)", urlStr)); m.toMatchResult(); boolean ignore = false; String host = m.group("host"); for (String ignoreHost : ignoreHostList) { if (ignoreHost.equals(host)) { ignore = true; break; } } if (!ignore) { HttpHost proxy = new HttpHost(proxyHost, proxyPort, "http"); builder.setProxy(proxy); } } if (keepAlive) { headers.add(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_KEEP_ALIVE)); } else { headers.add(new BasicHeader(HTTP.CONN_DIRECTIVE, HTTP.CONN_CLOSE)); } return builder.build(); } /* * ?? URL ??? * */ private void send(String url, String data) throws Exception { // URL ? Matcher m = urlPattern.matcher(url); if (!m.matches()) throw new InternalError(String.format("invalid url(%s)", urlStr)); m.toMatchResult(); String path = m.group("path"); if (path != null && !path.isEmpty()) { String host = m.group("host"); String port = m.group("port"); String[] paths = path.split("/"); for (int i = 1; i < paths.length; ++i) { paths[i] = URLEncoder.encode(paths[i], "utf-8"); } url = "http://" + host + (port == null || port.isEmpty() ? "" : (":" + port)); for (int i = 1; i < paths.length; ++i) { url += "/" + paths[i]; } } HttpPost requestPost = new HttpPost(url); requestPost.addHeader("content-type", "application/json"); requestPost.setEntity(new StringEntity(data, StandardCharsets.UTF_8)); logger.debug(String.format("send() : request start. url=%s", url)); int count = 0; int maxTryCount = PropertyConstants.hub_transfer_max_try_count.number(); while (count < maxTryCount) { try { long start = HinemosTime.currentTimeMillis(); try (CloseableHttpResponse response = getHttpClient().execute(requestPost)) { long responseTime = HinemosTime.currentTimeMillis() - start; logger.debug(String.format("send() : url=%s, responseTime=%d", url, responseTime)); int statusCode = response.getStatusLine().getStatusCode(); logger.debug(String.format("send() : url=%s, code=%d", url, statusCode)); if (statusCode == HttpStatus.SC_OK) { logger.debug(String.format("send() : url=%s, success=%s", url, response.getStatusLine().toString())); if (logger.isDebugEnabled()) { ByteArrayOutputStream out = new ByteArrayOutputStream(); try (InputStream in = response.getEntity().getContent()) { byte[] buffer = new byte[BUFF_SIZE]; while (out.size() < BODY_MAX_SIZE) { int len = in.read(buffer); if (len < 0) { break; } out.write(buffer, 0, len); } } String res = new String(out.toByteArray(), "UTF-8"); if (!res.isEmpty()) logger.debug(String.format("send() : url=%s, response=%s", url, res)); } } else { throw new RuntimeException( String.format("http status code isn't 200. code=%d, message=%s", statusCode, response.getStatusLine().toString())); } } logger.debug(String.format("send() : success. url=%s, count=%d", url, count)); break; } catch (RuntimeException e) { ++count; if (count < maxTryCount) { logger.debug(e.getMessage(), e); logger.debug(String.format( "send() : fail to send, and then wait to retry. url=%s, count=%d", url, count)); try { Thread.sleep(1000); } catch (InterruptedException e1) { logger.debug(e.getMessage()); } } else { throw new TransferException( String.format("send() : fail to send. url=%s, retry count=%d, error=\"%s\"", url, count, e.getMessage())); } } } } @Override public void close() throws Exception { if (client != null) client.close(); } private void internalError_session(String sessionId, String data, Exception error, String url) { internalError_session(sessionId, data, error.getMessage() == null || error.getMessage().isEmpty() ? error.getClass().getSimpleName() : error.getMessage(), url); } private void internalError_session(String sessionId, String data, String error, String url) { AplLogger.put(PriorityConstant.TYPE_WARNING, HinemosModuleConstant.HUB_TRANSFER, MessageConstant.MESSAGE_HUB_DATA_TRANSFER_FAILED, new String[] { info.getTransferId() }, String.format("error=%s%ntransferId=%s%ndestTypeId=%s%nsessionId=%s%ndata=%s%nurl=%s", error, info.getTransferId(), info.getDestTypeId(), sessionId, data, url)); } private void internalError_monitor(String sessionId, String data, Exception error, String url) { internalError_monitor(sessionId, data, error.getMessage() == null || error.getMessage().isEmpty() ? error.getClass().getSimpleName() : error.getMessage(), url); } private void internalError_monitor(String monitorId, String data, String error, String url) { AplLogger.put(PriorityConstant.TYPE_WARNING, HinemosModuleConstant.HUB_TRANSFER, MessageConstant.MESSAGE_HUB_DATA_TRANSFER_FAILED, new String[] { info.getTransferId() }, String.format("error=%s%ntransferId=%s%ndestTypeId=%s%nmonitorId=%s%ndata=%s%nurl=%s", error, info.getTransferId(), info.getDestTypeId(), monitorId, data, url)); } }; }
From source file:run.var.teamcity.cloud.docker.client.apcon.ApacheConnector.java
/** * Create the new Apache HTTP Client connector. * * @param client JAX-RS client instance for which the connector is being created. * @param config client configuration.//from w w w . j a v a 2 s. co m */ ApacheConnector(final Client client, final Configuration config) { final Object connectionManager = config.getProperties().get(ApacheClientProperties.CONNECTION_MANAGER); if (connectionManager != null) { if (!(connectionManager instanceof HttpClientConnectionManager)) { LOGGER.log(Level.WARNING, LocalizationMessages.IGNORING_VALUE_OF_PROPERTY(ApacheClientProperties.CONNECTION_MANAGER, connectionManager.getClass().getName(), HttpClientConnectionManager.class.getName())); } } Object reqConfig = config.getProperties().get(ApacheClientProperties.REQUEST_CONFIG); if (reqConfig != null) { if (!(reqConfig instanceof RequestConfig)) { LOGGER.log(Level.WARNING, LocalizationMessages.IGNORING_VALUE_OF_PROPERTY(ApacheClientProperties.REQUEST_CONFIG, reqConfig.getClass().getName(), RequestConfig.class.getName())); reqConfig = null; } } final SSLContext sslContext = client.getSslContext(); final HttpClientBuilder clientBuilder = HttpClientBuilder.create(); clientBuilder.setConnectionManager(getConnectionManager(client, config, sslContext)); clientBuilder.setConnectionManagerShared(PropertiesHelper.getValue(config.getProperties(), ApacheClientProperties.CONNECTION_MANAGER_SHARED, false, null)); clientBuilder.setSslcontext(sslContext); final RequestConfig.Builder requestConfigBuilder = RequestConfig.custom(); final Object credentialsProvider = config.getProperty(ApacheClientProperties.CREDENTIALS_PROVIDER); if (credentialsProvider != null && (credentialsProvider instanceof CredentialsProvider)) { clientBuilder.setDefaultCredentialsProvider((CredentialsProvider) credentialsProvider); } final Object proxyUri; proxyUri = config.getProperty(ClientProperties.PROXY_URI); if (proxyUri != null) { final URI u = getProxyUri(proxyUri); final HttpHost proxy = new HttpHost(u.getHost(), u.getPort(), u.getScheme()); final String userName; userName = ClientProperties.getValue(config.getProperties(), ClientProperties.PROXY_USERNAME, String.class); if (userName != null) { final String password; password = ClientProperties.getValue(config.getProperties(), ClientProperties.PROXY_PASSWORD, String.class); if (password != null) { final CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials(new AuthScope(u.getHost(), u.getPort()), new UsernamePasswordCredentials(userName, password)); clientBuilder.setDefaultCredentialsProvider(credsProvider); } } clientBuilder.setProxy(proxy); } final Boolean preemptiveBasicAuthProperty = (Boolean) config.getProperties() .get(ApacheClientProperties.PREEMPTIVE_BASIC_AUTHENTICATION); this.preemptiveBasicAuth = (preemptiveBasicAuthProperty != null) ? preemptiveBasicAuthProperty : false; final boolean ignoreCookies = PropertiesHelper.isProperty(config.getProperties(), ApacheClientProperties.DISABLE_COOKIES); if (reqConfig != null) { final RequestConfig.Builder reqConfigBuilder = RequestConfig.copy((RequestConfig) reqConfig); if (ignoreCookies) { reqConfigBuilder.setCookieSpec(CookieSpecs.IGNORE_COOKIES); } requestConfig = reqConfigBuilder.build(); } else { if (ignoreCookies) { requestConfigBuilder.setCookieSpec(CookieSpecs.IGNORE_COOKIES); } requestConfig = requestConfigBuilder.build(); } if (requestConfig.getCookieSpec() == null || !requestConfig.getCookieSpec().equals(CookieSpecs.IGNORE_COOKIES)) { this.cookieStore = new BasicCookieStore(); clientBuilder.setDefaultCookieStore(cookieStore); } else { this.cookieStore = null; } clientBuilder.setDefaultRequestConfig(requestConfig); /* DK_CLD: Add our connection reuse strategy. */ clientBuilder.setConnectionReuseStrategy(new UpgradeAwareConnectionReuseStrategy()); clientBuilder.setRequestExecutor(new HttpRequestExecutor() { protected HttpResponse doReceiveResponse(final HttpRequest request, final org.apache.http.HttpClientConnection conn, final HttpContext context) throws HttpException, IOException { Args.notNull(request, "HTTP request"); Args.notNull(conn, "Client connection"); Args.notNull(context, "HTTP context"); HttpResponse response = null; int statusCode = 0; while (response == null || (statusCode < HttpStatus.SC_OK // DK_CLD: the original implementation provided this loop to retry the HTTP request as long as // an intermediate response is returned (1xx status). This is however not suitable for the // status code 101 returned from Docker (and more generally, WebSockets) to notify that the // connection has been upgraded to raw TCP streaming. In such case the server ultimate response // is not HTTP anymore. && statusCode != HttpStatus.SC_SWITCHING_PROTOCOLS)) { response = conn.receiveResponseHeader(); if (canResponseHaveBody(request, response)) { conn.receiveResponseEntity(response); } statusCode = response.getStatusLine().getStatusCode(); } // while intermediate response return response; } @Override protected boolean canResponseHaveBody(HttpRequest request, HttpResponse response) { boolean canResponseHaveBody = super.canResponseHaveBody(request, response); return canResponseHaveBody || response.getStatusLine().getStatusCode() == HttpStatus.SC_SWITCHING_PROTOCOLS; } }); this.client = clientBuilder.build(); }