博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
新旧apache HttpClient 获取httpClient方法
阅读量:5275 次
发布时间:2019-06-14

本文共 2983 字,大约阅读时间需要 9 分钟。

在apache httpclient 4.3版本中对很多旧的类进行了deprecated标注,通常比较常用的就是下面两个类了。

DefaultHttpClient —> CloseableHttpClient

HttpResponse —> CloseableHttpResponse

目前互联网对外提供的接口通常都是HTTPS协议,有时候接口提供方所示用的证书会出现证书不受信任的提示,chrome访问接口(通常也不会用chrome去访问接口,只是举个例子)会出现这样的提示:

为此我们调用这类接口的时候就要忽略掉证书认证信息,我们调用接口的httpClient就要做特殊处理。下面记录下httpclient 4.3以前和之后的httpClient获取方法。

httpclient jar包4.3以前版本获取HttpClient方法如下:

1 public static HttpClient getHttpClient(HttpClient base) { 2         try { 3             SSLContext ctx = SSLContext.getInstance("SSL"); 4             X509TrustManager tm = new X509TrustManager() { 5                 public java.security.cert.X509Certificate[] getAcceptedIssuers() { 6                     return null; 7                 } 8  9                 @Override10                 public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {11                 }12 13                 @Override14                 public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {15                 }16             };17 18             ctx.init(null, new TrustManager[] {tm}, null);19             SSLSocketFactory ssf = new SSLSocketFactory(ctx, SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);20             ClientConnectionManager mgr = base.getConnectionManager();21             SchemeRegistry registry = mgr.getSchemeRegistry();22             registry.register(new Scheme("https", 443, ssf));23             return new DefaultHttpClient(mgr, base.getParams());24         } catch (Exception e) {25             log.warn("{}", e);26             return null;27         }28     }

httpclient jar包4.3之后版本获取HttpClient方法如下:

1 public static CloseableHttpClient getHttpClient() { 2         try { 3             SSLContext sslContext = SSLContext.getInstance("SSL"); 4             sslContext.init(null, new TrustManager[] {
new X509TrustManager() { 5 @Override 6 public void checkClientTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException { 7 8 } 9 10 @Override11 public void checkServerTrusted(X509Certificate[] x509Certificates, String s) throws CertificateException {12 13 }14 15 @Override16 public X509Certificate[] getAcceptedIssuers() {17 return new X509Certificate[0];18 }19 }}, new SecureRandom());20 SSLConnectionSocketFactory socketFactory = new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE);21 CloseableHttpClient closeableHttpClient = HttpClientBuilder.create().setSSLSocketFactory(socketFactory).build();22 return closeableHttpClient;23 } catch (Exception e) {24 log.warn("create closeable http client failed!");25 return HttpClientBuilder.create().build();26 }27 }

 

转载于:https://www.cnblogs.com/snowater/p/7591128.html

你可能感兴趣的文章
目前为止用过的最好的Json互转工具类ConvertJson
查看>>
Day13
查看>>
tensorflow saver简介+Demo with linear-model
查看>>
Luogu_4103 [HEOI2014]大工程
查看>>
Oracle——SQL基础
查看>>
项目置顶随笔
查看>>
Redis的安装与使用
查看>>
P1970 花匠
查看>>
java语言与java技术
查看>>
NOIP2016提高A组五校联考2总结
查看>>
iOS 项目的编译速度提高
查看>>
table中checkbox选择多行
查看>>
Magento开发文档(三):Magento控制器
查看>>
性能调优攻略
查看>>
ie6解决png图片透明问题
查看>>
瞬间的永恒
查看>>
2019-8-5 考试总结
查看>>
JS中实现字符串和数组的相互转化
查看>>
web service和ejb的区别
查看>>
Windows Azure Cloud Service (29) 在Windows Azure发送邮件(下)
查看>>