gpt4 book ai didi

java - 如何使用 Spring 的 WebClient 将 Flux 作为 JSON 数组进行 HTTP POST?

转载 作者:行者123 更新时间:2023-12-02 10:23:03 26 4
gpt4 key购买 nike

如何使用 Spring 的响应式 WebClient发布 Flux<String>作为 JSON 数组?

Flux<String> stringFlux = Flux.fromIterable(objects).map(MyObject::getSomeString);

WebClient.create(baseUrl)
.post()
.uri(myUrl)
.contentType(MediaType.APPLICATION_JSON)
.body(stringFlux, String.class)
.exchange()
.flatMap(response -> {
if (response.statusCode().is2xxSuccessful()) {
// Do something
}
return response.bodyToMono(Void.class);
})
.block();

这会发送请求,但不会将其作为 JSON 字符串数组发送。

我看到还有一个body()接受 ParameterizedTypeReference 的签名,所以我尝试了这个:

.body(stringFlux.collectList(), new ParameterizedTypeReference<>() {})

但这实际上会导致编译错误(我使用的是 Java 11):

Error:java: com.sun.tools.javac.code.Types$FunctionDescriptorLookupError .

有什么想法吗?

最佳答案

好吧,我会被诅咒的。我使用 ParameterizedTypeReference 让它工作。与通常的情况一样,编译错误总结了这一点。我在声明 new ParameterizedTypeReference<>() {} 时省略了类型参数。提供类型就可以了,并发布了我的 Flux<String>作为 JSON 数组:

.body(stringFlux.collectList(), new ParameterizedTypeReference<List<String>>() {})

IntelliJ 告诉我这种类型是推断出来的,但显然不是。

关于java - 如何使用 Spring 的 WebClient 将 Flux<String> 作为 JSON 数组进行 HTTP POST?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54187276/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com