`
杨胜寒
  • 浏览: 286201 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HttpClient4.x客户端身份验证(HTTPS安全连接)

阅读更多

 

原文地址: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

0
5
分享到:
评论

相关推荐

    HttpClient 3.x to HttpComponents HttpClient 4.x

    HttpComponents HttpClient是HTTP/1.1兼容的HTTP代理实现,基于HttpCore项目,它提供了可重用的客户端身份验证、HTTP状态管理和HTTP连接管理等组件。 升级过程中,程序员首先需要意识到的是API的重大变更。...

    httpclient4.3.x及其依赖jar包

    6. **安全增强**:支持SSL/TLS加密,可配置SSL上下文,支持证书管理和身份验证。 7. **性能优化**:通过缓存机制,HttpClient可以缓存响应,减少不必要的网络通信。 8. **国际化与本地化**:HttpClient支持多种...

    httpclientDemo(4.x与4以下的版本)例子

    这个"HttpclientDemo(4.x与4以下的版本)"示例显然涵盖了HttpClient在不同版本间的使用方法,特别是4.x版本和4.x之前的版本之间的差异。在本文中,我们将深入探讨HttpClient的基本概念、主要功能以及在不同版本中的...

    HttpClient3.1.jar

    - **身份验证和安全**:HttpClient支持多种身份验证机制,包括基本认证、摘要认证和NTLM。对于HTTPS,它也支持SSL/TLS协议,可以配置证书和信任管理器。 - **Cookie管理**:通过`CookiePolicy`和`CookieSpec`,可以...

    HttpClient所需jar包(全) httpClient.4.13jar

    HttpClient库不仅包含了HTTP客户端的基本功能,还提供了一些高级特性,如重试策略、连接管理和身份验证机制。 "json-lib"是一个与HttpClient相关的标签,表明这个压缩包可能还包括了处理JSON数据的库。JSON...

    org.apache.commons.httpclient-3.1.jar

    《Apache Commons HttpClient 3.1:HTTP客户端编程的基石》 ...然而,需要注意的是,HttpClient 3.1已不再维护,最新的稳定版本为HttpClient 4.x,对于新项目建议使用更现代的版本以获取更好的性能和兼容性。

    httpClient

    7. **Redirect与Authentication策略**:HttpClient 4.x提供了灵活的重定向和认证策略,可以根据服务器响应自动处理重定向和身份验证。 二、HttpClient 3.x系列 1. **连接管理**:HttpClient 3.x版本虽然也支持连接...

    commons-httpclient3.1.jar,commons-codec1.3.jar,commons-logging1.1.1.jar

    Apache HttpClient是一个Java库,提供了全面的HTTP客户端功能,包括支持HTTP/1.1协议、连接管理、身份验证、重定向处理等。HttpClient 3.1是该库的一个旧版本,尽管现在已经被更新的HttpClient 4.x系列取代,但在很...

    commons-httpclient-3.0.jar

    3. **HTTP协议支持**:HttpClient实现了HTTP/1.0和HTTP/1.1协议,支持Cookie管理、URL重定向、身份验证(如Basic Auth和Digest Auth)以及HTTPS安全通信。 4. **请求和响应处理**:HttpClient提供了丰富的API,使得...

    httpclient4.2.2.zip

    4. 支持SSL/TLS:HttpClient支持HTTPS协议,可以通过SSL/TLS安全地进行网络通信。 5. 异步处理:4.2.2版本支持异步执行HTTP请求,能够更好地利用多线程环境,提升程序并发能力。 二、HttpClient 4.2.2的使用步骤 1....

    commons-httpclient-3.1.jar

    这使得HttpClient能够安全地访问需要身份验证的资源。 另外,HttpClient还提供了对Cookie的管理。通过`CookiePolicy`和`CookieSpec`,我们可以控制Cookie的接收和发送策略,确保合规性。 在使用过程中,我们还需要...

    最新org.apache.commons.httpclient.rar

    - **身份验证**:支持多种身份验证机制,如Basic、Digest、NTLM和Kerberos等。 - **Cookie管理**:自动处理服务器返回的Cookie,维持会话状态。 - **URL重定向**:自动处理HTTP状态码为3xx的重定向。 - **上传与...

    httpclient4.1.2.zip

    在身份验证方面,HttpClient 4.1.2支持多种认证机制,如Basic认证、Digest认证、NTLM认证等。开发者只需提供相应的认证信息,HttpClient就能自动处理认证过程。 HttpClient 4.1.2也提供了对HTTPS的支持,包括证书...

    经典教程httpClient4

    1. **HttpClient基础**:HttpClient 4.x的初始化和配置,包括创建HttpClient实例,设置连接池,处理重定向和重试策略。 2. **请求构造**:如何构建HTTP请求,包括添加请求头、设置请求方法、携带请求体等。比如,...

    httpclient-4.5.jar

    CredentialsProvider存储认证信息,而Authenticator负责在需要时提供这些信息进行身份验证。 5. **RedirectStrategy**和**RetryStrategy**:这些策略类分别定义了如何处理重定向和请求失败后的重试逻辑,可以根据...

    org.apache.commons.httpclient 远程下载文件

    这个库为开发者提供了高级HTTP客户端功能,比如支持多种HTTP方法(GET、POST等)、处理Cookies、管理连接池以及进行身份验证。在本篇讨论中,我们将深入理解如何使用HttpClient来实现远程文件下载。 首先,我们需要...

    httpclient http客户端

    6. 身份验证:HttpClient支持多种身份验证机制,如Basic、Digest、NTLM等,适用于不同的服务器认证需求。 7. 异步操作:HttpClient提供了异步API,可以在处理HTTP请求时避免阻塞主线程,提高应用的响应速度。 二、...

    httpClient4jar包

    在HttpClient 4.4.1.jar中,包含了HttpClient的主要功能实现,如HTTP方法(GET, POST等)、连接管理、重定向处理、身份验证机制、Cookie管理以及各种HTTP协议头的设置。这个核心库让你可以方便地构建HTTP请求,并...

    commons-httpclient相关jar包

    它支持多种HTTP特性,如Cookie管理、自动重定向、身份验证机制(如NTLM和Kerberos)、连接管理和超时设置。此外,它还提供了对HTTPS的支持,通过SSL/TLS协议确保通信安全。 3. **commons-logging-1.1.1.jar**: 这是...

Global site tag (gtag.js) - Google Analytics