gpt4 book ai didi

java - Spring WebFlux WebClient : receive part of response

转载 作者:行者123 更新时间:2023-11-30 02:08:01 25 4
gpt4 key购买 nike

我使用WebClient(spring webflux)发送一些信息,并不真正关心响应,只是记录它。如果它很大,我不需要读取所有内容,只需读取 500 字节左右即可。据我了解, bodyToMono() 将整个 body 读入内存。如何只得到一个 body 的开始?

client.post()
.syncBody(payload)
.retrieve()
.bodyToMono(String.class)
.subscribe( r -> logResponce(r),
t -> logException(t));

最佳答案

这是我能得到的最好的:

    WebClient client = WebClient.create("http://www.example.com/");
client.post()
.syncBody("test")
.exchange()
.flatMap(response->response.body((t,m)->t.getBody().next()))
.subscribe( r -> {
System.out.println("Available bytes:" + r.readableByteCount());
final int limit = r.readableByteCount() < 500 ? r.readableByteCount() : 500;
System.out.println("Limit:" + limit);
byte[] dst = new byte[limit];
r.asByteBuffer().get(dst, 0, limit);
System.out.println("body=" + new String(dst, StandardCharsets.UTF_8));
},
t -> System.out.println(t));

它消耗第一个数据 block 并打印前 500 个字符。

关于java - Spring WebFlux WebClient : receive part of response,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50936275/

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