HttpClient 详解
This content is not available in your language yet.
Feat HttpClient 是一个功能强大、灵活且高效的 HTTP 客户端库,旨在帮助开发者轻松发送 HTTP 请求、处理响应。无论你是要调用第三方 API,还是构建微服务间的通信,HttpClient 都能胜任。
在开始使用 Feat HttpClient 之前,我们需要先引入相关依赖。
在 Maven 项目中,添加以下依赖到 pom.xml:
<dependency> <groupId>tech.smartboot.feat</groupId> <artifactId>feat-core</artifactId> <version>${feat.version}</version></dependency>发送第一个 GET 请求
Section titled “发送第一个 GET 请求”万事开头难,让我们从一个简单的例子开始。下面的示例展示了如何使用 Feat HttpClient 发送 GET 请求并处理响应:
import tech.smartboot.feat.core.client.HttpClient;import java.io.IOException;
public class HttpClientDemo { public static void main(String[] args) throws IOException { // 创建 HttpClient 实例 HttpClient client = new HttpClient("https://www.baidu.com");
// 发送 GET 请求 client.get().onSuccess(response -> { // 处理响应 System.out.println("Status Code: " + response.statusCode()); System.out.println("Body: " + response.body()); }).submit(); }}是不是很简单?接下来我们会深入了解 HttpClient 的各种功能。
HttpClient 实例化
Section titled “HttpClient 实例化”HttpClient 提供了两种实例化方式,让你可以根据不同的场景选择最适合的方式。
方式一:完整的请求URL
这种方式最为直观,只需要传入完整的 URL 即可:
HttpClient client = new HttpClient("http://127.0.0.1:8080");
HttpClient client = new HttpClient("https://smartboot.tech/feat/");HttpClient 会自动解析 URL 中的 host 和 port 信息,并识别是否使用 HTTPS 协议。
方式二:指定 host、port
如果你更喜欢分别指定主机和端口,也可以这样:
HttpClient httpClient = new HttpClient("127.0.0.1", 8080);
HttpClient httpClient = new HttpClient("smartboot.tech", 443);这两种方式各有优势,你可以根据实际需求选择。
API 参考:Options 配置
Section titled “API 参考:Options 配置”通过 HttpClient.options() 方法可以对客户端进行详细配置,支持链式调用。
| 配置项 | 类型 | 默认值 | 说明 |
|---|---|---|---|
host | String | null | 服务地址,必填项 |
port | int | 80 | 服务端口 |
connectTimeout | int | 0 | 连接超时时间(毫秒),0 表示永不超时 |
readBufferSize | int | 1024 | 读缓冲区大小(字节) |
writeBufferSize | int | 1024 | 写缓冲区大小(字节) |
debug | boolean | false | 是否开启调试模式 |
proxy | ProxyOptions | null | 代理配置 |
HTTP请求
Section titled “HTTP请求”HttpClient 提供了多种方式来发送 HTTP 请求,满足不同的使用场景。
通用请求方法
Section titled “通用请求方法”HttpClient 提供了 rest() 方法用于发送通用的 HTTP 请求。rest() 方法的参数包括:
- method: HTTP 请求方法,如 GET、POST、PUT、DELETE 等。
- path: 请求路径,如 /api/user。
请求构造完毕后,需要调用 submit() 方法发送请求。
public class HttpRestDemo { public static void main(String[] args) throws IOException { // 创建 HttpClient 实例 HttpClient client = new HttpClient("https://smartboot.tech"); client.options().debug(true); // 发送 GET 请求 client.rest(HttpMethod.GET, "/feat/").onSuccess(response -> { System.out.println("Status Code: " + response.statusCode()); System.out.println("Body: " + response.body()); }).submit(); }}专用请求方法
Section titled “专用请求方法”对于 GET、POST 等常见的 HTTP 请求方法,HttpClient 提供了对应的方法,如 get()、post() 等,使用起来更加直观:
public class HttpGetDemo { public static void main(String[] args) { HttpClient httpClient = new HttpClient("https://smartboot.tech"); httpClient.get("/feat/") .onSuccess(response -> System.out.println(response.body())) .onFailure(Throwable::printStackTrace) .submit(); }}API 参考:异步回调
Section titled “API 参考:异步回调”HttpClient 提供了强大的异步回调机制,可以在请求发送后立即返回,而不需要等待请求完成。
| 回调方法 | 触发时机 | 用途 |
|---|---|---|
onResponseHeader | 响应 Header 解析完成后 | 检查状态码和头部信息 |
onResponseBody | 接收到 Body 内容时 | 流式处理响应体 |
onSuccess | 请求成功完成时 | 处理完整响应 |
onFailure | 请求失败时 | 处理异常、超时 |
onResponseHeader 示例
Section titled “onResponseHeader 示例”public class ResponseHeaderDemo { public static void main(String[] args) { HttpClient httpClient = new HttpClient("https://smartboot.tech"); httpClient.get("/feat/") .onResponseHeader(response -> { for (String name : response.getHeaderNames()) { System.out.println(name + ": " + response.getHeader(name)); } }) .submit(); }}onResponseBody 示例
Section titled “onResponseBody 示例”public class ResponseBodyDemo { public static void main(String[] args) { HttpClient httpClient = new HttpClient("https://smartboot.tech"); httpClient.get("/feat/") .onResponseBody(new Stream() { @Override public void stream(HttpResponse response, byte[] bytes, boolean end) throws IOException { System.out.println("接收到数据:" + new String(bytes)); if (end) { System.out.println("数据接收完毕"); } } }) .submit(); }}在使用 HttpClient 时,有一些最佳实践可以帮助你写出更好的代码:
- 合理设置超时时间:避免请求无限期挂起
- 正确处理异常:使用 onFailure 回调处理各种异常情况
- 复用 HttpClient 实例:避免频繁创建和销毁客户端实例
- 使用连接池:对于高并发场景,合理配置连接池参数
- 启用调试模式:在开发和调试阶段,可以开启 debug 模式查看详细日志
通过这篇文章,我们学习了 Feat HttpClient 的核心功能:
- 如何实例化 HttpClient
- 如何配置客户端选项
- 如何发送各种类型的 HTTP 请求
- 如何使用异步回调处理响应
HttpClient 的设计兼顾了易用性和功能性,无论是简单场景还是复杂需求都能很好地满足。掌握了这些知识,你就可以在项目中灵活运用 HttpClient 来处理各种 HTTP 通信需求了。
有关完整示例,请参见 HttpClient 测试代码