Java 使用 HttpClient 接收 SSE 流数据
使用 Java HttpClient 接收 SSE 流数据
服务器发送事件 (SSE) 是一种用于从服务器向客户端推送数据的技术。在 Java 11 及更高版本中,你可以使用 java.net.http.HttpClient 方便地接收 SSE 流数据。
以下代码示例演示了如何使用 HttpClient 发送 GET 请求到 SSE 端点,并将响应体转换为 InputStream 流,然后使用 Scanner 逐行读取流数据:
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.util.Scanner;
public class SSEClient {
public static void main(String[] args) throws Exception {
HttpClient httpClient = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("http://example.com/sse-endpoint")) // 替换为实际的SSE端点URL
.build();
httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream())
.body()
.onClose(() -> System.out.println("连接已关闭")) // 当连接关闭时打印消息
.transferTo(System.out); // 将流数据输出到标准输出
// 或者使用Scanner逐行读取流数据
// InputStream inputStream = httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream()).body();
// Scanner scanner = new Scanner(inputStream);
// while (scanner.hasNextLine()) {
// String line = scanner.nextLine();
// System.out.println(line);
// }
}
}
代码解释:
- 创建 HttpClient:
HttpClient httpClient = HttpClient.newHttpClient(); - 构建 HttpRequest: 创建一个 GET 请求,目标 URL 是 SSE 端点 (
http://example.com/sse-endpoint),你需要将其替换为实际的 SSE 端点 URL。 - 发送请求并获取 InputStream: 使用
httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream())发送请求,并使用HttpResponse.BodyHandlers.ofInputStream()将响应体转换为InputStream流。 - 处理流数据: 可以直接将
InputStream输出到标准输出 (System.out),或者使用Scanner逐行读取流数据并进行自定义处理。
注意:
- 上述示例仅适用于 Java 11 及更高版本,因为
java.net.http.HttpClient是在 Java 11 中引入的。 - 如果你使用的是 Java 8 或更早版本,你可以考虑使用第三方库,如 Apache HttpClient 或 OkHttp 来处理 SSE 流数据。
原文地址: http://www.cveoy.top/t/topic/fUR 著作权归作者所有。请勿转载和采集!