在发出HTTP请求前,我们先创建了一个HttpClient对象。那么,在实际项目中,我们很可能在多处需要进行HTTP通信,这时候我们不需要为每个请求都创建一个新的HttpClient。因为之前已经提到,HttpClient就像一个小型的浏览器,对于整个应用,我们只需要一个HttpClient就够了。看到这里,一定有人心里想,这有什么难的,用单例啊!!
但是现在我们的应用程序使用同一个HttpClient来管理所有的Http请求,一旦出现并发请求,那么 一定会出现多线程的问题。这就好像我们的浏览器只有一个标签页却有多个用户,A要上google,B要上baidu,这时浏览器就会忙不过来了。幸运的 是,HttpClient提供了创建线程安全对象的API,帮助我们能很快地得到线程安全的“浏览器”。
publicclass CustomerHttpClient { privatestaticfinal String CHARSET = HTTP.UTF_8; privatestatic HttpClient customerHttpClient; private CustomerHttpClient() { } publicstaticsynchronized HttpClient getHttpClient() { if (null== customerHttpClient) { HttpParams params =new BasicHttpParams(); // 设置一些基本参数 HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1); HttpProtocolParams.setContentCharset(params, CHARSET); HttpProtocolParams.setUseExpectContinue(params, true); HttpProtocolParams .setUserAgent( params, "Mozilla/5.0(Linux;U;Android 2.2.1;en-us;Nexus One Build.FRG83) " +"AppleWebKit/553.1(KHTML,like Gecko) Version/4.0 Mobile Safari/533.1"); // 超时设置 /* 从连接池中取连接的超时时间 */ ConnManagerParams.setTimeout(params, 1000); /* 连接超时 */ HttpConnectionParams.setConnectionTimeout(params, 2000); /* 请求超时 */ HttpConnectionParams.setSoTimeout(params, 4000); // 设置我们的HttpClient支持HTTP和HTTPS两种模式 SchemeRegistry schReg =new SchemeRegistry(); schReg.register(new Scheme("http", PlainSocketFactory .getSocketFactory(), 80)); schReg.register(new Scheme("https", SSLSocketFactory .getSocketFactory(), 443)); // 使用线程安全的连接管理来创建HttpClient ClientConnectionManager conMgr =new ThreadSafeClientConnManager( params, schReg); customerHttpClient =new DefaultHttpClient(conMgr, params); } return customerHttpClient; } }
参考:http://www.cnblogs.com/codingmyworld/archive/2011/08/17/2141706.html
相关推荐
为了正确使用HttpClient,你需要确保将这些JAR文件添加到你的项目类路径中。 HttpClient的主要知识点包括: 1. **HTTP方法支持**:HttpClient支持GET、POST、PUT、DELETE等多种HTTP方法,以及HEAD、OPTIONS、TRACE...
6. **commons-logging.jar**(可选):HttpClient使用了Apache Commons Logging进行日志记录,如果系统中没有其他日志实现,可能需要添加这个库。 7. **commons-codec.jar**:用于编码和解码,如Base64编码,URL...
在Java项目中使用HttpClient时,为了确保功能的完整性和正确性,通常需要引入一系列的jar包。这些jar包包含了HttpClient的核心组件、依赖库和其他必要的工具,它们共同构成了HttpClient的运行环境。 以下是一些关键...
HttpClient是Apache Jakarta Common项目下的一个核心组件,专为开发者提供了强大的HTTP客户端编程接口。...HttpClient库不仅支持基本的HTTP...正确使用HttpClient,能够提高应用的网络性能,同时简化HTTP请求的处理流程。
4. **异步与线程安全**:说明HttpClient如何支持异步请求,以及在多线程环境下正确使用HttpClient的注意事项。 5. **HTTPS支持**:介绍配置SSL上下文,处理证书和信任管理,以支持安全的HTTPS通信。 6. **源码分析...
然而,由于这个例程使用了HttpClient,我们需要了解其工作原理和如何在Android环境中正确使用。 7. **注意事项**: - 异步处理:网络请求不应在主线程中进行,以免阻塞用户界面,应使用异步任务或Android的...
- **创建HttpClient实例**:首先,我们需要创建一个HttpClient对象,例如使用`HttpClientBuilder`或`HttpClients.createDefault()`方法。 - **构建HttpGet请求**:使用`HttpGet`类创建一个HTTP GET请求,指定要...
在IT行业中,网络通信是应用程序之间交互的重要方式。...正确理解和应用HttpClient的各种特性和配置,能够帮助我们构建高效、可靠的网络通信方案。在实际开发中,还需要根据具体项目需求进行适当的调整和优化。
HttpClient是Java中一个重要的HTTP客户端库,用于发送HTTP请求并接收响应。这个库由Apache软件基金会开发,并且在许多企业级应用中广泛使用。...在实际项目中,正确使用HttpClient能够提高网络通信的效率和稳定性。
本教程将聚焦于使用`HttpClient`库进行GET请求,这是获取远程资源最常见的方式。请注意,本教程不涉及POST请求,POST主要用于向服务器提交数据。 ## 1. Android HttpClient介绍 `HttpClient`是Apache HTTP组件的一...
7. **最佳实践**:为了保持代码的整洁和可维护性,通常建议使用try-with-resources语句来确保HttpClient和相关资源的正确关闭,避免内存泄漏。 8. **与其他库的集成**:HttpClient可以与其他Java库(如Spring框架)...
### httpclient使用教程 #### HttpClient概述与重要性 在当今互联网时代,HTTP协议无疑是网络通信中最常用且至关重要的协议之一。随着技术的发展,越来越多的Java应用程序需要直接通过HTTP协议访问网络资源。尽管...
本文将深入探讨如何使用HttpClient来彻底解决乱码问题。 HttpClient是一个功能强大的HTTP客户端,支持多种HTTP协议版本,包括GET、POST等请求方法,以及重试、连接管理等功能。在处理中文字符时,由于编码不一致...
在提供的压缩包文件中,"第一个版本.rar"和"第二个版本.rar"可能包含了不同的HttpClient使用示例或者不同版本的代码。你可以解压并查看这些文件,以便更深入地理解和学习HttpClient的具体用法。每个版本可能包含不同...
HttpClient是Apache基金会开发的一个HTTP客户端库,用于在Java应用程序中执行HTTP请求。...在本例中,我们将探讨如何使用HttpClient登录163邮箱。...正确配置和使用HttpClient,能够实现高效且可靠的网络通信。
在深入讨论正确使用HttpClient之前,我们先来看看它的起源和基本使用方法,进而逐步深入到如何避免常见的陷阱,并介绍.NET Core为我们提供的更高级的HttpClient使用方式。 首先,HttpClient类是.NET Framework中的...
2. **请求和响应模型**:HttpClient使用HttpRequest和HttpResponse对象封装HTTP请求和响应,便于处理请求头、请求体和响应头、响应体。 3. **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、...
以下将详细介绍如何使用Java HttpClient进行模拟登录。 首先,我们需要在项目中引入HttpClient的相关依赖。如果是Maven项目,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.apache.httpcomponents ...
使用HttpClient组件解析HTML...通过设置HttpClient的字符集参数,并使用`charset`参数来指定字符集,我们可以正确地解析HTML页面的内容。此外,使用`getContent`方法可以截取HTML字符串中的一段文字,满足特定的需求。
Apache HttpClient 是一个提供 HTTP 协议客户端功能的开源库,它是 Apache ...用户还能够了解到如何配置HttpClient以适应不同的需求,以及如何在应用程序中正确地集成和使用HttpClient来提高网络通信的效率和可靠性。