使用 Java HttpClient 接收 Server-Sent Events (SSE) 流数据

本教程介绍如何使用 Java 11 中的 java.net.http.HttpClient 接收 Server-Sent Events (SSE) 返回的流数据。

步骤:

  1. 创建 HttpClient 对象:

    HttpClient client = HttpClient.newHttpClient();
    
  2. 创建 HttpRequest 对象,指定 SSE 的 URL 和请求方法为 GET:

    HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("http://example.com/sse"))
            .GET()
            .build();
    
  3. 使用 HttpClient 发送请求并异步获取响应:

    CompletableFuture<HttpResponse<InputStream>> responseFuture = client.sendAsync(request, BodyHandlers.ofInputStream());
    
  4. 处理响应数据:

    responseFuture.thenAccept(response -> {
        try (BufferedReader reader = new BufferedReader(new InputStreamReader(response.body()))) {
            String line;
            while ((line = reader.readLine()) != null) {
                // 处理每一行数据
                System.out.println(line);
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    });
    

代码解释:

  • 使用 BufferedReader 逐行读取响应体的数据。
  • 可以根据实际需求对读取到的数据进行处理。
  • 使用 try-catch 块处理可能出现的 IOException 异常。

注意:

  • 上述代码使用了 Java 11 中引入的新的 HttpClient API。
  • 如果你使用的是较早版本的 Java,可以考虑使用第三方库如 Apache HttpClient 来实现相同的功能。
Java 使用 HttpClient 接收 Server-Sent Events (SSE) 流数据

原文地址: http://www.cveoy.top/t/topic/fUh 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录