在 Java 开发中,HTTP 客户端是与服务端交互的关键组件。随着技术发展,出现了多种 HTTP 客户端库,本文汇总了常用的 Java HTTP 客户端,介绍其特点、适用场景,并附上简单使用示例,方便开发者快速选择和上手。
1.常用 HTTP 客户端一览
名称 | 简介 | 特点 |
---|
HttpClient(JDK 自带) | Java 11 引入的官方 HTTP 客户端 | 支持异步、HTTP/2,API 现代 |
RestTemplate | Spring 提供的同步 HTTP 客户端(即将被淘汰) | 简洁,适合小项目;被 WebClient 替代 |
WebClient | Spring 5 提供的响应式 HTTP 客户端 | 支持响应式编程,推荐替代 RestTemplate |
OkHttpClient | Square 出品,轻量级高性能 HTTP 客户端 | 支持异步、连接池、拦截器 |
Apache HttpClient | Apache 出品的经典 HTTP 客户端库 | 功能强大、稳定、支持各种高级特性 |
Feign | 声明式 HTTP 客户端,适用于 Spring Cloud | 开发效率高,集成 Ribbon/Hystrix |
Retrofit | Square 出品,封装 OkHttp 的声明式客户端 | 强大的 JSON 自动转换,适合 REST API |
AsyncHttpClient | 异步非阻塞 HTTP 客户端(如 Netty 实现) | 高并发性能好,用于微服务场景 |
Vert.x WebClient | Vert.x 框架的异步 HTTP 客户端 | 轻量级、响应式,非常适合微服务 |
Jetty HttpClient | Jetty 提供的 HTTP 客户端实现 | 支持异步和 HTTP/2,常用于嵌入式 |
2.推荐选择场景
需求 | 推荐客户端 |
---|
简单同步请求 | RestTemplate(传统)或 HttpClient(Java 11+) |
响应式或高并发 | WebClient, AsyncHttpClient, Vert.x WebClient |
简洁封装、声明式调用 | Feign, Retrofit |
高度可定制 | OkHttp, Apache HttpClient |
3.各客户端 GET 和 POST 示例
1. HttpClient(Java 11+)
// GET 请求
HttpClient client = HttpClient.newHttpClient();HttpRequest getRequest = HttpRequest.newBuilder().uri(URI.create("https://jsonplaceholder.typicode.com/posts/1")).GET().build();HttpResponse<String> getResponse = client.send(g