本文示例代码基于 4.5.13 版本
转载请注明出处:https://www.cnblogs.com/qnlcy/p/15378446.html
Apache 提供用来做http请求的项目有两个,3.x 版本的项目叫做 。
它一开始是 下的子项目,后来独立出去了,现在这个项目已经结束了它的生命周期,不再开发和维护。
取而代之的是 4.x 版本的 项目,它包括 和 两大模块,能提供更好的性能和更大的灵活性。
项目包括 和 两大模块,其中, 是一套HTTP协议实现包。而 是基于HttpCore的一套客户端。
使用 需要经过如下步骤
- 创建
- 创建 http 请求,如 、
- 添加请求参数
- 添加请求设置,如超时等
- 使用 执行 http 请求
- 读取返回内容并释放连接
3.1.1 创建默认客户端:
一些重要的默认配置:
- 默认连接池大小10,每域名最大连接5
- 连接池中连接存活时间 ,默认单位为毫秒,默认连接不失效
- 域名验证器为 , 会验证域名
- SSL 上下文为 ,没有使用密钥管理器()和信任管理器()
3.1.2 自定义客户端
- 失败不重试
- 自定义连接池
创建 、 请求
3.4.1 超时时间说明
注意:
和 如果不设置,请求会阻塞。
但是 的情况有所不同,它依赖于各平台的 超时时间设置。
windows 10 实测为 20s, linux 平台则不定,它会按 中配置的次数重试,一般为3s7s15s31s63s递增
另外,即使 java 程序返回了超时结果,但是linux服务器依旧在执行重试直到服务器端超时,为了提高资源利用率,可以手动关闭
关于 linux socket 超时的问题,请参阅 无毁的湖光-Al 的 从linux源码看socket(tcp)的timeout
执行 http 请求比较简单,直接调用 方法即可
服务器返回结果被封装到 对象里,我们可以从这里拿到我们想要的返回结果
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.bianchenghao6.com/java-jiao-cheng/18291.html