80,356
社区成员
发帖
与我相关
我的任务
分享
private static volatile HttpClient HTTP_CLIENT;
private static Object HTTP_CLIENT_LOCK = new Object();
private static int CONNECT_TIMEOUT_IN_MS = 30 * 1000;
private static int SOCKET_TIMEOUT_IN_MS = 30 * 1000;
private static HttpClient getHttpClient() {
if (HTTP_CLIENT == null) {
synchronized (HTTP_CLIENT_LOCK) {
if (HTTP_CLIENT == null) {
HttpParams params = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(params, CONNECT_TIMEOUT_IN_MS);
HttpConnectionParams.setSoTimeout(params, SOCKET_TIMEOUT_IN_MS);
ConnManagerParams.setMaxTotalConnections(params, 100);
HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80));
schemeRegistry.register(new Scheme("https", SSLSocketFactory.getSocketFactory(), 443));
ClientConnectionManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
HTTP_CLIENT = new DefaultHttpClient(cm, params);
}
}
}
return HTTP_CLIENT;
}
protected HttpUriRequest createHttpRequest(Map<String, String> param) {
Uri.Builder builder;
Uri pathUri = Uri.parse("https://www.xxx.x/xxxx");
builder = pathUri.buildUpon();
for (String key : param.keySet()) {
builder.appendQueryParameter(key, param.get(key));
}
return new HttpGet(builder.toString());
}
//使用样例:
HttpClient client = getHttpClient();
HttpResponse resp = client.execute(createHttpRequest(Map<String, String>));
HttpEntity entity = resp.getEntity();
StatusLine statusLine = resp.getStatusLine();