[英]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.