if (this.httpclient != null) {
return this.httpclient;
}
// cast is safe because we're on the client
ApacheHttpClientConfig config = (ApacheHttpClientConfig)request.getAttribute(WinkConfiguration.class);
BasicHttpParams params = new BasicHttpParams();
params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, Integer.valueOf(config
.getConnectTimeout()));
params.setParameter(CoreConnectionPNames.SO_TIMEOUT, Integer.valueOf(config
.getReadTimeout()));
params.setParameter(ClientPNames.HANDLE_REDIRECTS, Boolean.valueOf(config
.isFollowRedirects()));
if (config.isFollowRedirects()) {
params.setParameter(ClientPNames.ALLOW_CIRCULAR_REDIRECTS, Boolean.TRUE);
}
// setup proxy
if (config.getProxyHost() != null) {
params.setParameter(ConnRoutePNames.DEFAULT_PROXY, new HttpHost(config.getProxyHost(),
config.getProxyPort()));
}
if (config.getMaxPooledConnections() > 0) {
SchemeRegistry schemeRegistry = SchemeRegistryFactory.createDefault();
ThreadSafeClientConnManager httpConnectionManager = new ThreadSafeClientConnManager(schemeRegistry);
httpConnectionManager.setMaxTotal(config.getMaxPooledConnections());
httpConnectionManager.setDefaultMaxPerRoute(config.getMaxPooledConnections());
this.httpclient = new DefaultHttpClient(httpConnectionManager, params);
} else {
this.httpclient = new DefaultHttpClient(params);
}
if (config.getBypassHostnameVerification()) {
SSLContext sslcontext = SSLContext.getInstance("TLS");
sslcontext.init(null, null, null);
SSLSocketFactory sf = new SSLSocketFactory(sslcontext, new X509HostnameVerifier() {