HttpComponents: 概述

文章目录

        • [1. 概述](#1. 概述)
        • [2. 生态位](#2. 生态位)
1. 概述

早期的Java想要实现HTTP客户端需要借助URL/URLConnection或者自己手动从Socket开始编码,需要处理大量HTTP协议的具体细节,不但繁琐还容易出错。 Apache Commons HttpClient的诞生就是为了解决这个问题,它正是我们看到的Apache HttpComponents的前生。 Apache HttpComponents将Apache Commons HttpClient进一步做职责划分,将项目分成3个部分:

模块 说明
HttpCore HTTP协议解析、生成器的实现
HttpClient 提供基于BIO的HTTP客户端,适用于大数据量传输的请求
Async HttpClient 提供基于NIO的HTTP客户端实现,适用于高并发的客户端请求
2. 生态位
  • 早期的Java通过HttpURLConnection提供,支持有限的功能,使用复杂。
  • Java 11开始提供了自带HttpClient但是并不支持文件传输,大大限制了使用场景,而且国内很多公司还停留在Java 8,这也严重制约了它的发展和流行。
  • 因为出现的早,HttpComponents最广泛被采用的。成也萧何败萧何,早期的API略显迂腐,用起来并不是很舒服。
  • OkHttp是目前使用体验最好的一个类库,如果是新项目推荐优先使用。

下面的图是国外码农对现有常见类库的评测,选择的时候可以根据自己的使用场景确认是否符合需求。

相关推荐
鲜花飘飘扬2 小时前
HTTP请求头中表示代理IP地址的属性及获取情况
网络协议·tcp/ip·http
极光代码工作室2 小时前
基于SpringBoot的课程预约系统
java·springboot·web开发·后端开发
Leighteen2 小时前
`try-finally` 里的 `return`:为什么 `finally` 会悄悄改掉返回值、吞掉异常
java·开发语言
名字还没想好☜3 小时前
Go 的 time.After 在 select 循环里内存泄漏:定时器堆积原理与 timer.Reset 正确姿势
java·数据库·golang·go·goroutine
圆山猫3 小时前
[Virtualization](三):RISC-V H-extension 与 Guest 执行模式
android·java·risc-v
caishenzhibiao3 小时前
期货先行者主图 同花顺期货通指标
java·c语言·c#
史呆芬4 小时前
分布式事务实战:微服务跨服务数据一致性解决方案
java·后端·spring cloud
IT界的老黄牛4 小时前
限流命中后该怎么办:直接丢、阻塞等待、延迟重投三种姿势的取舍
java·rocketmq·redisson·令牌桶·削峰·分布式限流
daad7775 小时前
记录matlab状态机demo
java·网络·matlab
牡丹雅忻15 小时前
AES 加密模式演进:从 ECB、CBC 到 GCM 的 C# 深度实践
java·开发语言·c#