Java HttpClient 接收 SSE 流数据 - 异步发送 HTTP 请求示例

Java 的 HttpClient 类提供了一种异步发送 HTTP 请求并接收响应的方式。您可以使用该类的 sendAsync 方法来发送请求并异步接收 SSE(Server-Sent Events)返回的流数据。

示例代码:

import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.ByteBuffer;
import java.util.concurrent.CompletableFuture;
import java.util.function.Consumer;

public class SSEExample {

    public static void main(String[] args) throws Exception {
        HttpClient httpClient = HttpClient.newHttpClient();
        HttpRequest httpRequest = HttpRequest.newBuilder()
                .uri(URI.create("http://example.com/sse-endpoint"))
                .GET()
                .build();

        Consumer<ByteBuffer> consumer = byteBuffer -> {
            // 处理接收到的字节数据
            byte[] data = byteBuffer.array();
            // TODO: 根据实际需求进行处理
        };

        CompletableFuture<HttpResponse<Void>> future = httpClient.sendAsync(httpRequest, HttpResponse.BodyHandlers.ofByteArrayConsumer(consumer));
        future.thenAccept(response -> {
            // 处理响应
            int statusCode = response.statusCode();
            // TODO: 根据实际需求进行处理
        });

        // 等待异步请求完成
        future.join();
    }
}

代码解释:

  1. 创建 HttpClient 实例和 HttpRequest 对象,指定 SSE 的 URL。
  2. 定义 Consumer<ByteBuffer> 来处理接收到的字节数据。
  3. 使用 sendAsync 方法发送请求,并使用 HttpResponse.BodyHandlers.ofByteArrayConsumer 方法指定响应的处理方式。
  4. 使用 thenAccept 方法处理响应,获取响应状态码等信息。
  5. 使用 join 方法等待异步请求完成。

注意:

  • 此示例中的代码仅为示范目的,您需要根据实际需求进行适当的处理和错误处理。
  • 确保您的 SSE 端点正确配置并返回有效的 SSE 数据。
Java HttpClient 接收 SSE 流数据 - 异步发送 HTTP 请求示例

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

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