新旧apache HttpClient 获取httpClient方法
在apache httpclient 4.3版本中对很多旧的类进行了deprecated标注,通常比较常用的就是下面两个类了。
DefaultHttpClient —> CloseableHttpClient
HttpResponse —> CloseableHttpResponse
目前互联网对外提供的接口通常都是HTTPS协议,有时候接口提供方所示用的证书会出现证书不受信任的提示,chrome访问接口(通常也不会用chrome去访问接口,只是举个例子)会出现这样的提示:

为此我们调用这类接口的时候就要忽略掉证书认证信息,我们调用接口的httpClient就要做特殊处理。下面记录下httpclient 4.3以前和之后的httpClient获取方法。
httpclient jar包4.3以前版本获取HttpClient方法如下:
 public static HttpClient getHttpClient(HttpClient base) {
         try {
             SSLContext ctx = SSLContext.getInstance("SSL");
             X509TrustManager tm = new X509TrustManager() {
                 public java.security.cert.X509Certificate[] getAcceptedIssuers() {
                     return null;
                 }
                 @Override
                 public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                 }
                 @Override
                 public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {
                 }
             };
             ctx.init(null, new TrustManager[] {tm}, null);
             SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
             ClientConnectionManager mgr = base.getConnectionManager();
             SchemeRegistry registry = mgr.getSchemeRegistry();
             registry.register(new Scheme("https", 443, ssf));
             return new DefaultHttpClient(mgr, base.getParams());
         } catch (Exception e) {
             log.warn("{}", e);
             return null;
         }
     }
httpclient jar包4.3之后版本获取HttpClient方法如下:
 public static CloseableHttpClient getHttpClient() {
         try {
             SSLContext sslContext = SSLContext.getInstance("SSL");
             sslContext.init(null, new TrustManager[] {new X509TrustManager() {
                 @Override
                 public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
                 }
                 @Override
                 public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {
                 }
                 @Override
                 public X509Certificate[] getAcceptedIssuers() {
                     return new X509Certificate[0];
                 }
             }}, new SecureRandom());
             SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);
             CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().setSSLSocketFactory(socketFactory).build();
             return closeableHttpClient;
         } catch (Exception e) {
             log.warn("create closeable http client failed!");
             return HttpClientBuilder.create().build();
         }
     }
新旧apache HttpClient 获取httpClient方法的更多相关文章
- org.apache.http.client.HttpClient使用方法
		一.org.apache.commons.httpclient和org.apache.http.client区别(转) 官网说明: http://hc.apache.org/httpclient- ... 
- httpclient新旧版本分割点4.3
		从这个版本开始,httpclient的api发生了一次重大调整.主要包括如下:Release 4.3 Final ------------------- This is the first stabl ... 
- Java通过httpclient获取cookie模拟登录
		package Step1; import org.apache.commons.httpclient.Cookie; import org.apache.commons.httpclient.Htt ... 
- apache.http.client.HttpClient
		前言 HTTP 协议可能是现在 Internet 上使用得最多.最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源.虽然在 JDK 的 java net包中已经提 ... 
- Android 6.0 SDK 找不到HttpClient的解决方法
		一.情况描述 在eclipse或Android Studio开发时(笔者目前只用过Android Studio),设置Android SDK的编译版本为23时,且使用了httpClient相关类的库项 ... 
- org.apache.http.client.HttpClient; HttpClient 4.3超时设置
		可用的code import org.apache.commons.lang.StringUtils;import org.apache.http.HttpEntity;import org.apac ... 
- C# httpclient获取cookies实现模拟web登录
		目前在公司做一款平台化的产品,我主要负责PC端上的开发,在产品推荐过程中为了节省开发时间很多功能模块没来得及做原生,用CEF嵌入了很多带功能web页面,与客户端进行交互从而实现功能. 在二期开发中,产 ... 
- HttpClient获取返回类型为JSON或XML的数据
		Java_HttpClient获取返回类型为JSON或XML的数据 原创 2017年04月06日 17:38:29 706 HttpClient 获取返回类型为JSON或XML的数据 使用httpco ... 
- HttpClient获取Cookie的两种方式
		转载:http://blog.csdn.net/zhangbinu/article/details/72777620 一.旧版本的HttpClient获取Cookies p.s. 该方式官方已不推荐使 ... 
随机推荐
- 切诺夫界证明(Chernoff bound)
- Visual Studio 编译使用FLTK库
			FLTK介绍 FLTK (Fast Light Tool Kit 发音为fulltick) 是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/ ... 
- poj  2763  Housewife Wind (树链剖分)
			题目链接:http://poj.org/problem?id=2763 题意: 给定一棵含n个结点的树和树的边权,共有q次操作,分为两种 0 c :求从位置s到c的距离,然后s变成c 1 a b:把第 ... 
- redis集群搭建及注意事项
			上一篇:redis的安装及注意事项 这里,在一个Linux虚拟机上搭建6个节点的redis伪集群,思路很简单,一台虚拟机上开启6个redis实例,每个redis实例有自己的端口.这样的话,相当于模拟出 ... 
- node.js后台快速搭建在阿里云(一)(express篇)
			前期准备 阿里云服务器 node.js pm2 express nginx linux(推荐教程:鸟哥的私房菜) 简介 嗯……我只是个前端而已 前段时间写过一个.net mvc的远程发布,关于.net ... 
- 利用JavaScript来切换样式表
			切换样式表 html页 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http:/ ... 
- 【DDD】领域驱动设计实践 —— 架构风格及架构实例
			概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场 ... 
- 使用CXF开发JAX-WS类型的WebService
			使用CXF记得要先加入CXF的jar包 方法1: Cxf编程实现: l 使用jaxwsServerFactoryBean发布 webservice服务端. 需要设置: jaxwsServerFacto ... 
- CRC与MD5的异同
			php中CRC32的用法: crc32 - 计算一个字符串的 crc32 多项式 生成 string 参数的 32 位循环冗余校验码多项式--: 这句话从英文翻译过来的,不正确,准确的说应该是这么理解 ... 
- 集美大学网络1413第七次作业成绩(团队三) --需求改进&系统设计
			题目 团队作业3--需求改进&系统设计 团队作业3成绩 团队/分值 TD BZ GJ CJ SI WBS GS JG DB SS SJ CS DC 总分 1 0.25 0.75 1 0.5 ... 
