`
123003473
  • 浏览: 1060314 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

带连接池的httpclient的使用小例

 
阅读更多
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 异步httpClient和同步httpClient连接池的工具类 包含jar

    HttpAsyncClient连接池的使用,项目中频繁发送http请求,同步http阻塞主线程,影响性能,使用 HttpAsyncClient可使性能提高,这里配合连接池使用,效果更好,同时还附带同步httpClient的连接池使用

    HttpCient连接池Demo

    在`HttpClientDemo`这个项目中,我们将看到如何配置和使用HttpClient的连接池来处理http和https的请求。HttpClient库不仅支持标准的HTTP协议,还通过SSL/TLS协议扩展了对HTTPS的支持,这使得它在需要安全通信的场景...

    连接池实现原理及效率测试

    3. 使用完毕后,客户端将连接归还给连接池,而不是直接关闭。 4. 连接池会检查归还的连接是否健康,如果健康则放回池中,否则会销毁并重新创建一个新的连接。 5. 如果池中没有可用连接,且达到最大连接数,新请求会...

    HttpClient使用小结

    6. **CloseableHttpClient**: HttpClient的实现了`Closeable`接口的版本,用完后需要调用`close()`方法关闭连接池,释放资源。 HttpClient的使用步骤大致如下: 1. 创建`HttpClient`实例,配置参数。 2. 创建`...

    springboot中注解配置连接池

    本文将深入探讨如何使用注解配置在Spring Boot中设置连接池。 首先,Spring Boot默认集成了多种数据库连接池,如HikariCP、Tomcat JDBC Pool和DBCP2等。其中,HikariCP因其高性能和稳定性而被广泛推荐。我们可以...

    HttpClient使用教程 事例

    在提供的压缩包文件中,"第一个版本.rar"和"第二个版本.rar"可能包含了不同的HttpClient使用示例或者不同版本的代码。你可以解压并查看这些文件,以便更深入地理解和学习HttpClient的具体用法。每个版本可能包含不同...

    httpClient使用指南最新版

    ### HttpClient 使用指南知识点详解 ...以上是基于提供的部分内容对HttpClient使用指南的相关知识点进行了详细说明。通过这些知识点的学习,可以更好地理解和掌握HttpClient的工作原理及其在实际开发中的应用。

    HTTPClient工具类,完整

    HTTPClient工具类,完整,HTTPClient工具类,完整,HTTPClient工具类,完整HTTPClient工具类,完整,HTTPClient工具类,完整

    使用HttpClient必须的jar包

    10. **配置和定制**:HttpClient具有高度可配置性,可以根据项目需求调整连接超时、读取超时、连接池大小等参数。 在实际使用中,开发者还需要根据项目的具体需求,考虑是否需要引入其他辅助库,如处理JSON的Gson或...

    HttpClient的小例子

    同时,HttpClient还支持连接池管理,通过`PoolingHttpClientConnectionManager`可以复用已建立的连接,提高性能: ```java PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm...

    Http连接池工具类

    两个主机建立连接的过程是很复杂的一个过程,涉及到多个数据包...一般情况下,普通使用HttpClient已经能满足我们的需求,不过有时候,在我们需要高并发大量的请求网络的时候,还是用“连接池”这样的概念能提升吞吐量。

    commons-httpclient,java中使用httpclient中使用的扩展工具

    11. **连接池管理**:`PoolingHttpClientConnectionManager`是HttpClient 4.x版本中的连接池管理器,可以更高效地复用TCP连接,减少建立新连接的开销。 在实际应用中,你需要根据项目需求配置HttpClient实例,例如...

    httpclient简单使用

    - `PoolingHttpClientConnectionManager`用于管理连接池,可以设置最大连接数、超时时间等: ```java PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); cm.setMaxTotal(100)...

    httpclient.jar包下载

    2. **请求和响应模型**:HttpClient使用HttpRequest和HttpResponse对象封装HTTP请求和响应,便于处理请求头、请求体和响应头、响应体。 3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、...

    httpClient组件使用说明

    HttpClient是Apache基金会开发的一款强大的HTTP客户端通信库,广泛应用于Java编程中,用于执行HTTP请求并处理...在实际项目中,根据需求可以进一步学习和使用更复杂的特性,例如HTTPS支持、连接池管理、超时设置等。

    使用httpClient访问https+443端口号。

    在实际开发中,还可能需要根据项目需求进行其他定制,例如添加重试机制、连接池管理、超时设置等。对于大型项目,推荐使用更现代的库,如Apache HttpComponents HttpClient 4.x系列,因为它们提供了更好的性能和更多...

    使用httpclient访问servlet

    HttpClient支持连接池管理,通过`PoolingHttpClientConnectionManager`可以控制并发连接数。同时,可以设置重试策略,如`HttpRequestRetryHandler`,在某些网络问题时自动重试请求。 8. **异步调用**: ...

    httpclient3.1 javadoc chm版

    使用HttpConnectionManager来管理连接池,如SingleClientConnManager或MultiThreadedHttpConnectionManager。 五、重定向处理 HttpClient可以自动处理服务器返回的重定向响应,通过设置RedirectHandler实现自定义...

Global site tag (gtag.js) - Google Analytics