jar包取自于httpclient-4.1.1.jar
1》:设置带连接池的HttpClient
public class HttpClientUtils {
private static final Log log = LogFactory.getLog(HttpClientUtils.class);
private static ThreadSafeClientConnManager cm = null;
static {
SchemeRegistry schemeRegistry = new SchemeRegistry();
schemeRegistry.register(new Scheme("http", 80, PlainSocketFactory.getSocketFactory()));
schemeRegistry.register(new Scheme("https", 443, SSLSocketFactory.getSocketFactory()));
cm = new ThreadSafeClientConnManager(schemeRegistry);
try {
int maxTotal = Integer.valueOf(ResourceUtil.getSystem("httpclient.max_total"));
cm.setMaxTotal(maxTotal);
} catch (NumberFormatException e) {
log.error("Key[httpclient.max_total] Not Found in systemConfig.properties", e);
}
// 每条通道的并发连接数设置(连接池)
try {
int defaultMaxConnection = Integer.valueOf(ResourceUtil.getSystem("httpclient.default_max_connection"));
cm.setDefaultMaxPerRoute(defaultMaxConnection);
} catch (NumberFormatException e) {
log.error("Key[httpclient.default_max_connection] Not Found in systemConfig.properties", e);
}
}
public static HttpClient getHttpClient() {
HttpParams params = new BasicHttpParams();
params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
params.setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 3000); // 3000ms
return new DefaultHttpClient(cm, params);
}
public static void release() {
if (cm != null) {
cm.shutdown();
}
}
}
2》:对于HttpClientUtils的使用
public final static UserLoginStatus verifyLogon(String token) {
HttpClient httpClient = HttpClientUtils.getHttpClient();
HttpPost httpPost = new HttpPost(INFOPLATFORM_SERVICE_SESSION);
List<NameValuePair> nvps = new ArrayList<NameValuePair>();
nvps.add(new BasicNameValuePair("interface", "verifyLogon"));
nvps.add(new BasicNameValuePair("token", token));
UserLoginStatus result = null;
try {
httpPost.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8));
HttpResponse response = httpClient.execute(httpPost);
if (response.getStatusLine().getStatusCode() != HttpStatus.SC_OK) {
} else {
HttpEntity entity = response.getEntity();
result = JsonConverter.toObj(EntityUtils.toString(entity), UserLoginStatus.class);
}
} catch (ClientProtocolException e) {
log.error("method: UserLoginStatus [ClientProtocolException]", e);
} catch (IOException e) {
log.error("method: UserLoginStatus [IOException] invoke information platform failed", e);
} catch (ParseException e) {
log.error("method: UserLoginStatus [ParseException] invoke information platform failed", e);
} catch (BaseException e) {
log.error("method: UserLoginStatus [BaseException] invoke information platform failed", e);
}
// 调用接口失败
if (null == result) {
result = new UserLoginStatus();
result.setCall_status("2");
result.setCall_message(INFOPLATFORM_ERR_MSG);
}
return result;
}
分享到:
相关推荐
HttpAsyncClient连接池的使用,项目中频繁发送http请求,同步http阻塞主线程,影响性能,使用 HttpAsyncClient可使性能提高,这里配合连接池使用,效果更好,同时还附带同步httpClient的连接池使用
在`HttpClientDemo`这个项目中,我们将看到如何配置和使用HttpClient的连接池来处理http和https的请求。HttpClient库不仅支持标准的HTTP协议,还通过SSL/TLS协议扩展了对HTTPS的支持,这使得它在需要安全通信的场景...
3. 使用完毕后,客户端将连接归还给连接池,而不是直接关闭。 4. 连接池会检查归还的连接是否健康,如果健康则放回池中,否则会销毁并重新创建一个新的连接。 5. 如果池中没有可用连接,且达到最大连接数,新请求会...
6. **CloseableHttpClient**: HttpClient的实现了`Closeable`接口的版本,用完后需要调用`close()`方法关闭连接池,释放资源。 HttpClient的使用步骤大致如下: 1. 创建`HttpClient`实例,配置参数。 2. 创建`...
本文将深入探讨如何使用注解配置在Spring Boot中设置连接池。 首先,Spring Boot默认集成了多种数据库连接池,如HikariCP、Tomcat JDBC Pool和DBCP2等。其中,HikariCP因其高性能和稳定性而被广泛推荐。我们可以...
在提供的压缩包文件中,"第一个版本.rar"和"第二个版本.rar"可能包含了不同的HttpClient使用示例或者不同版本的代码。你可以解压并查看这些文件,以便更深入地理解和学习HttpClient的具体用法。每个版本可能包含不同...
### HttpClient 使用指南知识点详解 ...以上是基于提供的部分内容对HttpClient使用指南的相关知识点进行了详细说明。通过这些知识点的学习,可以更好地理解和掌握HttpClient的工作原理及其在实际开发中的应用。
HTTPClient工具类,完整,HTTPClient工具类,完整,HTTPClient工具类,完整HTTPClient工具类,完整,HTTPClient工具类,完整
10. **配置和定制**:HttpClient具有高度可配置性,可以根据项目需求调整连接超时、读取超时、连接池大小等参数。 在实际使用中,开发者还需要根据项目的具体需求,考虑是否需要引入其他辅助库,如处理JSON的Gson或...
同时,HttpClient还支持连接池管理,通过`PoolingHttpClientConnectionManager`可以复用已建立的连接,提高性能: ```java PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm...
两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包...一般情况下,普通使用HttpClient已经能满足我们的需求,不过有时候,在我们需要高并发大量的请求网络的时候,还是用“连接池”这样的概念能提升吞吐量。
11. **连接池管理**:`PoolingHttpClientConnectionManager`是HttpClient 4.x版本中的连接池管理器,可以更高效地复用TCP连接,减少建立新连接的开销。 在实际应用中,你需要根据项目需求配置HttpClient实例,例如...
- `PoolingHttpClientConnectionManager`用于管理连接池,可以设置最大连接数、超时时间等: ```java PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(100)...
2. **请求和响应模型**:HttpClient使用HttpRequest和HttpResponse对象封装HTTP请求和响应,便于处理请求头、请求体和响应头、响应体。 3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、...
HttpClient是Apache基金会开发的一款强大的HTTP客户端通信库,广泛应用于Java编程中,用于执行HTTP请求并处理...在实际项目中,根据需求可以进一步学习和使用更复杂的特性,例如HTTPS支持、连接池管理、超时设置等。
在实际开发中,还可能需要根据项目需求进行其他定制,例如添加重试机制、连接池管理、超时设置等。对于大型项目,推荐使用更现代的库,如Apache HttpComponents HttpClient 4.x系列,因为它们提供了更好的性能和更多...
HttpClient支持连接池管理,通过`PoolingHttpClientConnectionManager`可以控制并发连接数。同时,可以设置重试策略,如`HttpRequestRetryHandler`,在某些网络问题时自动重试请求。 8. **异步调用**: ...
使用HttpConnectionManager来管理连接池,如SingleClientConnManager或MultiThreadedHttpConnectionManager。 五、重定向处理 HttpClient可以自动处理服务器返回的重定向响应,通过设置RedirectHandler实现自定义...