Getting Started
It’s so easy to get start with HttpClient
.
It’s so easy to get start with HttpClient
.
在HttpRequest
处理过程中,有时可能需要执行Retry、Redirect、Cache等操作,使用Interceptor
可以实现类似功能。
Filter
分为RequestFilter
和ResponseFilter
两种,前者主要用于处理HttpRequest
,在所有Interceptor
对HttpRequest
处理之后执行, 后者主要用于处理HttpResponse
,在响应headers到达之后立即执行,此时所有拦截器对HttpResponse
的处理均未开始执行。
在每次建立连接前,client可能需要将域名解析成IP地址,HttpClient
通过适配netty
原生的AddressResolverGroup
提供了一种更加简单、 灵活的NameResolver
扩展,用于将url地址中的域名解析成IP地址。
默认情况下,HttpClient
需要将整个响应body内容聚合后存放在内存中返回给业务处理,对于响应body内容较大的请求,此种方式可能会导致OOM。HttpClient
开放了底层的接口,支持用户自定义响应信息处理Handler,用于处理接收到的响应headers、body(分块的)、trailers等数据。通过这种方式,可以 灵活的处理响应数据,避免响应body堆积在内存中产生OOM的风险。
HttpClient
支持文件上传和下载功能。需要说明地是,对于内容较小的文件,可通过直接将文件内容写入请求body中或者直接从响应body中读取。 本文只讨论当文件内容过大,直接读取或者写入有OOM风险时的大文件上传和下载功能。
连接的创建和销毁通常比较消耗资源,为了提升高并发下场景下的通信效率,HttpClient
会自动使用连接池来管理与服务端的长连接。
HttpClient
提供了IO线程池及连接池的Metric指标统计,使用时通过HttpClient
实例便可直接获取。
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.