Java HttpClient 接收 SSE 流数据 - 异步发送 HTTP 请求示例
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();
}
}
代码解释:
- 创建
HttpClient实例和HttpRequest对象,指定 SSE 的 URL。 - 定义
Consumer<ByteBuffer>来处理接收到的字节数据。 - 使用
sendAsync方法发送请求,并使用HttpResponse.BodyHandlers.ofByteArrayConsumer方法指定响应的处理方式。 - 使用
thenAccept方法处理响应,获取响应状态码等信息。 - 使用
join方法等待异步请求完成。
注意:
- 此示例中的代码仅为示范目的,您需要根据实际需求进行适当的处理和错误处理。
- 确保您的 SSE 端点正确配置并返回有效的 SSE 数据。
原文地址: https://www.cveoy.top/t/topic/fUT 著作权归作者所有。请勿转载和采集!