protected HTTPConnectionParameter mergeConnectionParameter(HTTPConnectionParameter factorySettings, HTTPConnectionParameter clientSettings) { HTTPConnectionParameter effectiveParameter = factorySettings.clone(); if (clientSettings == null) { return effectiveParameter; HTTPConnectionParameter defaults = new HTTPConnectionParameter(); if (defaults.isAllowChunkedRequestContent() != clientSettings.isAllowChunkedRequestContent()) { effectiveParameter.setAllowChunkedRequestContent(clientSettings.isAllowChunkedRequestContent()); if (defaults.isFollowRedirects() != clientSettings.isFollowRedirects()) { effectiveParameter.setFollowRedirects(clientSettings.isFollowRedirects()); if (defaults.isEncodeSpaceCharacterAsPercent() != clientSettings.isEncodeSpaceCharacterAsPercent()) { effectiveParameter.setEncodeSpaceCharacterAsPercent(clientSettings.isEncodeSpaceCharacterAsPercent()); if (defaults.isUseContentEncoding() != clientSettings.isUseContentEncoding()) { effectiveParameter.setUseContentEncoding(clientSettings.isUseContentEncoding()); if (defaults.getConnectTimeoutInSec() != clientSettings.getConnectTimeoutInSec()) { effectiveParameter.setConnectTimeoutInSec(clientSettings.getConnectTimeoutInSec()); if (defaults.getReadTimeoutInSec() != clientSettings.getReadTimeoutInSec()) { effectiveParameter.setReadTimeoutInSec(clientSettings.getReadTimeoutInSec()); if (!defaults.getProxy().equals(clientSettings.getProxy())) { effectiveParameter.setProxy(clientSettings.getProxy()); if (defaults.getSSLContext() != clientSettings.getSSLContext()) { effectiveParameter.setSSLContext(clientSettings.getSSLContext());
private boolean canUseSharedConnectionManager(HTTPConnectionParameter params) { HTTPConnectionParameter defaultParams = getConnectionParameter(); if (defaultParams == params) { return true; } if (defaultParams.getSSLContext() != params.getSSLContext()) { return false; } if (defaultParams.getSSLHostnameVerifier() != params.getSSLHostnameVerifier()) { return false; } return true; }
protected HttpClientBuilder configureConnectionParams(HttpClientBuilder clientBuilder, HTTPConnectionParameter params) { RequestConfig requestConfig = RequestConfig.custom() .setSocketTimeout(params.getReadTimeoutInSec() * 1000) .setConnectTimeout(params.getConnectTimeoutInSec() * 1000) .setRedirectsEnabled(params.isFollowRedirects()) .setContentCompressionEnabled(params.isUseContentEncoding()) .build(); clientBuilder.setDefaultRequestConfig(requestConfig); return clientBuilder; }
private void applyConnectionParameter(HttpURLConnection urlcon, HTTPConnectionParameter connectionParameter) { urlcon.setConnectTimeout(Math.max(0, connectionParameter.getConnectTimeoutInSec() * 1000)); urlcon.setReadTimeout(Math.max(0, connectionParameter.getReadTimeoutInSec() * 1000)); urlcon.setInstanceFollowRedirects(connectionParameter.isFollowRedirects()); urlcon.setUseCaches(false); if (connectionParameter.isUseContentEncoding()) { urlcon.setRequestProperty(HTTPHeader.ACCEPT_ENCODING.getName(), "gzip,deflate"); } if (urlcon instanceof HttpsURLConnection) { HttpsURLConnection httpsUrlCon = (HttpsURLConnection) urlcon; SSLContext sslContext = connectionParameter.getSSLContext(); if (sslContext != null) { httpsUrlCon.setSSLSocketFactory(sslContext.getSocketFactory()); } HostnameVerifier sslHostNameVerifier = connectionParameter.getSSLHostnameVerifier(); if (sslHostNameVerifier != null) { httpsUrlCon.setHostnameVerifier(sslHostNameVerifier); } } String proxy = connectionParameter.getProxy(); if (!proxy.isEmpty()) { warnProxy(proxy); } }
HTTPConnectionParameter connectionParameter = new HTTPConnectionParameter(); connectionParameter.setEncodeSpaceCharacterAsPercent(true);
private HTTPContentWriter checkKvPContent() { String contentType = m_header.getValue(HTTPHeader.CONTENT_TYPE.getName()); if (isContentRequest() && contentType.startsWith(ContentType.APPLICATION_URLENCODED)) { KvPCollection params = m_parameter.clone(); // clear (url parameter) these are written into the body m_parameter.clear(); boolean spaceCharacterAsPercent = this.m_connectionParameter.isEncodeSpaceCharacterAsPercent(); EncodingOptions encodingOptions = EncodingOptions.defaultOptions(); if (spaceCharacterAsPercent) { encodingOptions = encodingOptions.spaceAsPercent(); } return new KvPHTTPContentWriter(params.asMap(), encodingOptions); } return null; }
@Override protected <T> HTTPResponseAdapter<T> process( final HTTPMethod method, final String endpointWithParameter, final KvPCollection header, final HTTPContentWriter contentWriter, final HTTPContentReader<T> contentReader, final HTTPConnectionParameter connectionParameter) throws Exception { HttpURLConnection urlcon = openConnection(endpointWithParameter); urlcon.setRequestMethod(method.name()); applyHeader(urlcon, header); applyConnectionParameter(urlcon, connectionParameter); String contentCharset = getCharsetFromContentTypeHeader(header); sendContent(urlcon, contentCharset, header, contentWriter, connectionParameter.isAllowChunkedRequestContent()); HTTPResponseAdapter<T> response = prepareResponse(endpointWithParameter, urlcon); readResponseContent(urlcon, response, contentReader, connectionParameter); return response; }
@Override public ConnectionParameter clone() { return (ConnectionParameter) super.clone(); } }
private void configureProxySettings(HttpClientBuilder clientBuilder, HTTPConnectionParameter params) { if (!params.getProxy().isEmpty()) { configureSingleProxy(clientBuilder, params.getProxy()); return; } if (isUseJDKProxySettings()) { configureJDKProxySettings(clientBuilder); } else { clientBuilder.setRoutePlanner(new DefaultRoutePlanner(DefaultSchemePortResolver.INSTANCE)); } }
HTTPConnectionParameter connectionParameter = new HTTPConnectionParameter(); connectionParameter.setEncodeSpaceCharacterAsPercent(true);
private HttpClientConnectionManager createConnectionManager(HTTPConnectionParameter params) { SSLContext sslContext = params.getSSLContext(); if (sslContext == null) { sslContext = SSLContexts.createSystemDefault(); } HostnameVerifier verifier = params.getSSLHostnameVerifier(); SSLConnectionSocketFactory sslsf; if (verifier != null) { sslsf = new SSLConnectionSocketFactory( sslContext, verifier); } else { sslsf = new SSLConnectionSocketFactory(sslContext); } Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create() .register("http", PlainConnectionSocketFactory.getSocketFactory()) .register("https", sslsf) .build(); PoolingHttpClientConnectionManager conManager = new PoolingHttpClientConnectionManager(registry); conManager.setMaxTotal(m_maxTotalConnections); conManager.setDefaultMaxPerRoute(m_maxConnectionsPerRoute); return conManager; }
if (connectionParameter.isEncodeSpaceCharacterAsPercent()) { encodingOptions = encodingOptions.spaceAsPercent();
endpointWithParameter, header, connectionParameter.isAllowChunkedRequestContent(), contentWriter);