HttpClientUtils.java
4.07 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
/*
* Decompiled with CFR 0_118.
*
* Could not load the following classes:
* org.apache.commons.httpclient.HostConfiguration
* org.apache.commons.httpclient.HttpClient
* org.apache.commons.httpclient.HttpConnectionManager
* org.apache.commons.httpclient.MultiThreadedHttpConnectionManager
* org.apache.commons.httpclient.SimpleHttpConnectionManager
* org.apache.commons.httpclient.params.HttpClientParams
* org.apache.commons.httpclient.protocol.Protocol
* org.apache.commons.httpclient.protocol.ProtocolSocketFactory
*/
package com.day.cq.analytics.sitecatalyst.util;
import com.day.cq.analytics.sitecatalyst.util.EasySSLProtocolSocketFactory;
import java.util.Collections;
import org.apache.commons.httpclient.HostConfiguration;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpConnectionManager;
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.SimpleHttpConnectionManager;
import org.apache.commons.httpclient.params.HttpClientParams;
import org.apache.commons.httpclient.protocol.Protocol;
import org.apache.commons.httpclient.protocol.ProtocolSocketFactory;
public class HttpClientUtils {
public static final int DEFAULT_CONNECTION_TIMEOUT = 30000;
public static final int DEFAULT_MAX_CONNECTIONS = 50;
public static final boolean DEFAULT_STALE_CONNECTION_CHECK = true;
public static final int DEFAULT_SO_LINGER = 0;
private HttpClientUtils() {
}
public static HttpClient newMultiThreaded() {
return HttpClientUtils.newMultiThreaded(30000, 50);
}
public static HttpClient newMultiThreaded(int connectionTimeout, int maxConnections) {
return HttpClientUtils.newMultiThreaded(connectionTimeout, maxConnections, true, 0);
}
public static HttpClient newMultiThreaded(int connectionTimeout, int maxConnections, boolean staleConnectionCheck, int soLinger) {
HttpClientParams params = HttpClientUtils.newParams(connectionTimeout, maxConnections, staleConnectionCheck, soLinger);
HttpClient httpClient = new HttpClient(params, (HttpConnectionManager)new MultiThreadedHttpConnectionManager());
return httpClient;
}
private static HttpClientParams newParams(int connectionTimeout, int maxConnections, boolean staleConnectionCheck, int soLinger) {
HttpClientParams params = new HttpClientParams();
params.setCookiePolicy("ignoreCookies");
params.setParameter("http.connection.timeout", (Object)connectionTimeout);
params.setParameter("http.connection.stalecheck", (Object)staleConnectionCheck);
params.setParameter("http.connection-manager.max-total", (Object)maxConnections);
params.setParameter("http.connection-manager.max-per-host", Collections.singletonMap(HostConfiguration.ANY_HOST_CONFIGURATION, maxConnections));
params.setParameter("http.socket.linger", (Object)soLinger);
return params;
}
public static void allowSelfSigned(HttpClient httpClient, String host, int port) {
if (port < 0) {
port = 443;
}
Protocol httpsProtocol = new Protocol("https", (ProtocolSocketFactory)new EasySSLProtocolSocketFactory(true), port);
httpClient.getHostConfiguration().setHost(host, port, httpsProtocol);
}
public static void shutdown(final HttpClient httpClient) {
if (httpClient != null) {
Thread shutdownThread = new Thread(){
@Override
public void run() {
HttpConnectionManager cm = httpClient.getHttpConnectionManager();
if (cm instanceof MultiThreadedHttpConnectionManager) {
((MultiThreadedHttpConnectionManager)cm).shutdown();
} else if (cm instanceof SimpleHttpConnectionManager) {
((SimpleHttpConnectionManager)cm).shutdown();
}
}
};
shutdownThread.setName("HttpConnectionManager Shutdown Thread");
shutdownThread.setDaemon(true);
shutdownThread.start();
}
}
}