![](/img/trans.png)
[英]Spring Webflux Mockito - mock the response of a Webclient call
[英]Spring WebFlux WebClient: receive part of response
我使用WebClient(spring webflux)发送一些信息,并且并不真正在乎响应,只记录它即可。 如果它很大,我不需要读取所有内容,而只需读取500个字节左右。 据我了解,bodyToMono()将整个身体读入内存。 如何获得一个身体的开始?
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));
它消耗第一个数据块并打印前500个字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.