原文地址:http://www.yshjava.cn/post/423.html
最近Apache HttpClient发布了最新的4.3版本,据说有很多的改进,加入了新的设计思想和理念,使API更加简洁有力,闲来无事,做个Demo尝尝鲜。
在以前的3.x版本中,HttpClient就已经支持HTTPS连接了,但是代码写的比较多,而且用起来感觉挺别扭的,同样的功能,到了4这里,明显得简单清爽多了。
如下是来自官方的一个例子,稍加改造,并翻译了注释:
package cn.ysh.studio.crawler.httpclient; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; /** * 演示如何使用HttpClient向需要身份验证的目标服务器发送HTTP请求 * * @author Shenghany * @date 2013-5-19 */ public class ClientAuthentication { public static void main(String[] args) throws Exception { DefaultHttpClient httpclient = new DefaultHttpClient(); try { //添加证书 httpclient.getCredentialsProvider().setCredentials( new AuthScope("localhost", 443), new UsernamePasswordCredentials("username", "password")); //创建GET请求 HttpGet httpget = new HttpGet("https://localhost/protected"); System.out.println("executing request" + httpget.getRequestLine()); //执行请求 HttpResponse response = httpclient.execute(httpget); //获得响应实体 HttpEntity entity = response.getEntity(); System.out.println("----------------------------------------"); System.out.println(response.getStatusLine()); if (entity != null) { System.out.println("Response content length: " + entity.getContentLength()); } //销毁实体 EntityUtils.consume(entity); } finally { // 当不再需要HttpClient实例时,关闭连接管理器以确保释放所有占用的系统资源 httpclient.getConnectionManager().shutdown(); } } }
原创文章,转载请注明出处:http://www.yshjava.cn/post/423.html
相关推荐
HttpComponents HttpClient是HTTP/1.1兼容的HTTP代理实现,基于HttpCore项目,它提供了可重用的客户端身份验证、HTTP状态管理和HTTP连接管理等组件。 升级过程中,程序员首先需要意识到的是API的重大变更。...
6. **安全增强**:支持SSL/TLS加密,可配置SSL上下文,支持证书管理和身份验证。 7. **性能优化**:通过缓存机制,HttpClient可以缓存响应,减少不必要的网络通信。 8. **国际化与本地化**:HttpClient支持多种...
这个"HttpclientDemo(4.x与4以下的版本)"示例显然涵盖了HttpClient在不同版本间的使用方法,特别是4.x版本和4.x之前的版本之间的差异。在本文中,我们将深入探讨HttpClient的基本概念、主要功能以及在不同版本中的...
- **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证和NTLM。对于HTTPS,它也支持SSL/TLS协议,可以配置证书和信任管理器。 - **Cookie管理**:通过`CookiePolicy`和`CookieSpec`,可以...
HttpClient库不仅包含了HTTP客户端的基本功能,还提供了一些高级特性,如重试策略、连接管理和身份验证机制。 "json-lib"是一个与HttpClient相关的标签,表明这个压缩包可能还包括了处理JSON数据的库。JSON...
《Apache Commons HttpClient 3.1:HTTP客户端编程的基石》 ...然而,需要注意的是,HttpClient 3.1已不再维护,最新的稳定版本为HttpClient 4.x,对于新项目建议使用更现代的版本以获取更好的性能和兼容性。
7. **Redirect与Authentication策略**:HttpClient 4.x提供了灵活的重定向和认证策略,可以根据服务器响应自动处理重定向和身份验证。 二、HttpClient 3.x系列 1. **连接管理**:HttpClient 3.x版本虽然也支持连接...
Apache HttpClient是一个Java库,提供了全面的HTTP客户端功能,包括支持HTTP/1.1协议、连接管理、身份验证、重定向处理等。HttpClient 3.1是该库的一个旧版本,尽管现在已经被更新的HttpClient 4.x系列取代,但在很...
3. **HTTP协议支持**:HttpClient实现了HTTP/1.0和HTTP/1.1协议,支持Cookie管理、URL重定向、身份验证(如Basic Auth和Digest Auth)以及HTTPS安全通信。 4. **请求和响应处理**:HttpClient提供了丰富的API,使得...
4. 支持SSL/TLS:HttpClient支持HTTPS协议,可以通过SSL/TLS安全地进行网络通信。 5. 异步处理:4.2.2版本支持异步执行HTTP请求,能够更好地利用多线程环境,提升程序并发能力。 二、HttpClient 4.2.2的使用步骤 1....
这使得HttpClient能够安全地访问需要身份验证的资源。 另外,HttpClient还提供了对Cookie的管理。通过`CookiePolicy`和`CookieSpec`,我们可以控制Cookie的接收和发送策略,确保合规性。 在使用过程中,我们还需要...
- **身份验证**:支持多种身份验证机制,如Basic、Digest、NTLM和Kerberos等。 - **Cookie管理**:自动处理服务器返回的Cookie,维持会话状态。 - **URL重定向**:自动处理HTTP状态码为3xx的重定向。 - **上传与...
在身份验证方面,HttpClient 4.1.2支持多种认证机制,如Basic认证、Digest认证、NTLM认证等。开发者只需提供相应的认证信息,HttpClient就能自动处理认证过程。 HttpClient 4.1.2也提供了对HTTPS的支持,包括证书...
1. **HttpClient基础**:HttpClient 4.x的初始化和配置,包括创建HttpClient实例,设置连接池,处理重定向和重试策略。 2. **请求构造**:如何构建HTTP请求,包括添加请求头、设置请求方法、携带请求体等。比如,...
CredentialsProvider存储认证信息,而Authenticator负责在需要时提供这些信息进行身份验证。 5. **RedirectStrategy**和**RetryStrategy**:这些策略类分别定义了如何处理重定向和请求失败后的重试逻辑,可以根据...
这个库为开发者提供了高级HTTP客户端功能,比如支持多种HTTP方法(GET、POST等)、处理Cookies、管理连接池以及进行身份验证。在本篇讨论中,我们将深入理解如何使用HttpClient来实现远程文件下载。 首先,我们需要...
6. 身份验证:HttpClient支持多种身份验证机制,如Basic、Digest、NTLM等,适用于不同的服务器认证需求。 7. 异步操作:HttpClient提供了异步API,可以在处理HTTP请求时避免阻塞主线程,提高应用的响应速度。 二、...
在HttpClient 4.4.1.jar中,包含了HttpClient的主要功能实现,如HTTP方法(GET, POST等)、连接管理、重定向处理、身份验证机制、Cookie管理以及各种HTTP协议头的设置。这个核心库让你可以方便地构建HTTP请求,并...
它支持多种HTTP特性,如Cookie管理、自动重定向、身份验证机制(如NTLM和Kerberos)、连接管理和超时设置。此外,它还提供了对HTTPS的支持,通过SSL/TLS协议确保通信安全。 3. **commons-logging-1.1.1.jar**: 这是...