WebClient请求flux响应
时间: 2025-05-19 19:42:29 浏览: 26
### 使用WebClient请求Flux类型的响应
当使用`WebClient`来获取流式的响应时,可以利用Reactor库中的`Flux`对象来处理这些数据。下面是一个具体的例子,展示了如何配置并发起GET请求以接收一个持续的数据流作为回应。
```java
import org.springframework.web.reactive.function.client.WebClient;
import reactor.core.publisher.Flux;
public class WebClientExample {
public static void main(String[] args) {
// 创建 WebClient 实例
WebClient webClient = WebClient.builder().baseUrl("http://example.com").build();
// 发起 GET 请求到指定 URI 并接受特定媒体类型
Flux<String> responseStream = webClient.get()
.uri("/stream") // 设置目标 URL路径
.accept(org.springframework.http.MediaType.TEXT_EVENT_STREAM) // 设定期望的内容格式为 Server-Sent Events (SSE)
.retrieve() // 获取响应体
.bodyToFlux(String.class); // 将响应转换成字符串形式的 Flux 流
// 订阅该 Flux 来消费每一个接收到的消息项
responseStream.subscribe(
data -> System.out.println("Received: " + data), // 成功回调函数, 处理每一项数据
error -> System.err.println("Error occurred: " + error.getMessage()), // 错误处理器
() -> System.out.println("Completed receiving all items.") // 完成后的操作
);
try { Thread.sleep(10_000L);} catch (InterruptedException e){} // 防止主线程过早结束
}
}
```
这段代码创建了一个`WebClient`实例并向给定URL发出HTTP GET请求,指定了要接收的是文本事件流(`text/event-stream`)这种MIME类型,这是服务器发送事件(SSE)的标准格式[^4]。接着调用了`.retrieve()`方法来准备提取响应内容,并通过`.bodyToFlux(String.class)`把响应体映射成了由多个字符串组成的`Flux`序列。最后订阅这个`Flux`以便每当有新消息到达时就能立即打印出来。
阅读全文
相关推荐



















