httpclient4使用说明

public class HttpClientObject {

public org.apache.http.client.HttpClient httpClient4New;// = new HttpClient();

public static HttpClient buildHttpClient() {

// builder.setProxy(new HttpHost("127.0.0.1",8888));

return builder.build();

}

//为HttpClient增加跳过SSL证书验证

private static PoolingHttpClientConnectionManager newConnectionManager() {

SSLContext sslcontext = null;

try {

sslcontext = SSLContext.getInstance("TLS");

X509TrustManager tm = new X509TrustManager() {

public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {

return null;

}

};

sslcontext.init(null, new TrustManager[] { tm }, null);

Registry socketFactoryRegistry = RegistryBuilder. create()

.register("http", PlainConnectionSocketFactory.INSTANCE)

.register("https", new SSLConnectionSocketFactory(sslcontext, NoopHostnameVerifier.INSTANCE))

.build();

SocketConfig config = SocketConfig.custom().setSoTimeout(1000 * 60).build();

PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(socketFactoryRegistry);

cm.setMaxTotal(20000);

cm.setDefaultMaxPerRoute(20000);

cm.setDefaultSocketConfig(config);

return cm;

}

catch (Exception e1) {

e1.printStackTrace();

}

return null;

}

private static PoolingHttpClientConnectionManager poolCm = null;

static {

poolCm = newConnectionManager();

new IdleConnectionMonitorThread(poolCm).start();

}

private static final RequestConfig defaultRequestConfig = RequestConfig.custom().setConnectTimeout(1000 * 10)

.setConnectionRequestTimeout(1000 * 10).setSocketTimeout(1000 * 60).build();

private static final HttpClientBuilder builder = HttpClients.custom().setConnectionManager(poolCm)

.setDefaultRequestConfig(defaultRequestConfig);

/**

* 定时清理连接池中失效的连接

*/

private static class IdleConnectionMonitorThread extends Thread {

private final HttpClientConnectionManager connMgr;

private volatile boolean shutdown;

public IdleConnectionMonitorThread(HttpClientConnectionManager connMgr) {

super();

this.connMgr = connMgr;

this.setDaemon(true);

}

@Override

public void run() {

try {

while (!shutdown) {

synchronized (this) {

wait(5000);

// Close expired connections

connMgr.closeExpiredConnections();

// Optionally, close connections

// that have been idle longer than 30 sec

connMgr.closeIdleConnections(30, TimeUnit.SECONDS);

}

}

}

catch (InterruptedException ex) {

// terminate

}

}

}

}

©著作权归作者所有:来自51CTO博客作者呜哈哈666888的原创作品,如需转载,请注明出处,否则将追究法律责任

java httpclient4_httpclient4使用说明相关推荐

  1. java 集成pageoffice_PageOffice 4.0 For Java集成使用说明

    PageOffice 4.0 For Java集成使用说明 如果新建网站或集成到您现有的网站里: 1).拷贝"集成文件"文件夹中的lib文件夹覆盖到您自己Web项目中WEB-INF ...

  2. java实验楼使用说明_Java 方法

    Java 方法 一.实验介绍 1.1 实验内容 本实验将学习Java方法的定义与语法规则.方法重载以及参数与返回值的相关内容. 1.2 实验知识点 方法的定义 方法重载 参数与返回值 1.3 实验环境 ...

  3. Java代码加密,Java加密方式,Java加密使用说明

    概述 Java2C针对DEX文件进行加密保护,将DEX文件中标记的Java代码翻译为C代码,编译成加固后的SO文件.默认情况只加密activity中的onCreate函数,如果开发者想加密其它类和方法 ...

  4. java项目使用说明_java项目 BeanCopier使用说明

    public classBeanCopierTest {static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:m ...

  5. 手把手教你搭建一个基于Java的分布式爬虫系统

    http://blog.51cto.com/xpleaf/2093952 1 概述 在不用爬虫框架的情况,经过多方学习,尝试实现了一个分布式爬虫系统,并且可以将数据保存到不同地方,类似MySQL.HB ...

  6. Java微信SDK方式进行网页授权

    微信Java SDK开发文档(2.0.0)地址:https://github.com/wechat-group/weixin-java-tools/wiki 微信Java SDK使用说明: https ...

  7. 【开源】java做游戏之QQ连连看java单机高仿版(算是目前最高仿的了)

    QQ连连看JAVA高仿单机版V1.0 前言 为什么说是目前最高仿的呢,因为想做这个的一般是新手,要实现的跟我一样有点难度,至少我在网上没搜到(java版本).还有就是高手对这个没兴趣,不会做这个玩意儿 ...

  8. SerialPort-4.0.+ 使用说明(Kotlin版本)

    SerialPort-4.0.+ 项目官网 Java版本使用说明 介绍 SerialPort 是一个开源的对 Android 蓝牙串口通信的轻量封装库,轻松解决了构建自己的串口调试APP的复杂程度,让 ...

  9. 华为云IOT的应用侧开发Java Demo使用详细教程(IntelliJ IDEA 开发)

    第0章 简介         最近有很多小伙伴在使用华为云IOT的应用侧开发的Java Demo时遇到一些问题,本期就教大家如何使用这个基于华为云官方提供的Java Demo,本期教程带大家做的是查询 ...

最新文章

  1. 滴滴 Elasticsearch 集群跨版本升级与平台重构之路
  2. 常用的js验证数字,电话号码,传真,邮箱,手机号码,邮编,日期
  3. 1-3_基本概念_程序进程
  4. 替换url部分_MOCTF部分Web题攻略
  5. mysql linux文件_MySQL在Linux系统下配置文件详解
  6. 【每日SQL打卡】​​​​​​​​​​​​​​​DAY 10丨买下所有产品的客户【难度中等】
  7. 数字图像的5种增强处理
  8. install cuda5 on ubuntu12.04
  9. Oracle 行转列pivot 、列转行unpivot 的Sql语句总结
  10. jquery load 和 iframe 比较
  11. WinStore控件之Button、HyperlinkButton、RadioButton、CheckBox、progressBar、ScrollViewer、Slider...
  12. 炒冷饭系列:设计模式 单例模式
  13. JS总结 循环 退出循环 函数
  14. 查询sql 语句的好坏
  15. 129.求根到叶子节点数字之和
  16. Python全栈(四)高级编程技巧之4.元类编程、迭代器和生成器
  17. 油炸锅EN/IEC60335 CE认证标准介绍
  18. GIS中EPSG4326与EPSG3857的区别及转换关系-20220830更新
  19. 测试计划与测试方案区别
  20. android 上拉抽屉,Flutter上拉抽屉实现

热门文章

  1. 图表 stack属性_想快速了解MEAN Stack吗? 这是带有有用图表的文档。
  2. corba的兴衰_代码广播的兴衰
  3. 浏览器兼容性问题解决方案之CSS——已在IE、FF、Chrome测试
  4. ExtJS之Store
  5. extjs官网+extjs官网案例
  6. VS2008 vs2010中JQUERY智能提醒
  7. linux安装之后缺少命令,centos7下安装缺少的命令依赖包
  8. python nums函数_Python中的内置函数
  9. Pandas数据操作
  10. 你在 或者不在 需要逻辑回归来算 | 协和八