使用webclient使用外部api



我有url列表。我试图从这些api中消费json数据。下面是我尝试过的代码,但我得到了Mono.flatMapMany->org.springframework.web.reactive.function.client.DefaultWebClient DefaultResponseSpec.bodyToFlux美元(DefaultWebClient.java: 554)

如果我使用。block()我得到那些api的jsonData,但事情是它成为同步当我使用。block()。我希望它是异步的。有谁能帮我一下吗?

提前感谢。

List<String> urls=getUrls();
Flux<String> k=null;
for(int i=0;i<urls.size();i++){
k=webClientBuilder.
build.get().
uri(urls.get(i)).retrieve().
bodyToFlux(String.class);
}

您提供的代码片段存在一些问题,因此我建议您首先阅读项目反应堆参考文档

下面的代码片段有望实现您正在寻找的。尽管如果希望将其作为响应式管道的一部分运行,您将希望从该方法返回Flux,而不是订阅。底层框架(在本例中是spring引导)将初始化订阅。

List<String> urls = Arrays.asList("https://google.com", "https://yahoo.com");
WebClient webClient = WebClient.builder().build();
Flux.fromStream(urls.stream())
.flatMap(url -> webClient.get()
.uri(url)
.retrieve()
.bodyToMono(String.class))
.doOnNext(s -> System.out.println("Response: " + s))
.subscribe();

最新更新