【发布时间】:2020-11-24 11:05:02
【问题描述】:
我是 Spring 新手,甚至是 WebClient 新手。我想使用 Springs 的 WebClient 以 1 秒的间隔重复过滤 Get 响应的主体,持续 2 分钟。我正在执行一个 get 请求,它返回一个空的 JSON 字符串列表。在某个时刻,正文将被填充,我想返回这个字符串列表。我想以这样的方式过滤响应,当它为空时,它会继续执行请求,直到它被填充并返回所需的结果。
private List<String> checkUser() {
List<String> ibanList = new ArrayList<>();
ExchangeFilterFunction filter = ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
if (clientResponse.body())
//something here
});
Optional<Account[]> accountsOptional = webClient.get()
.uri("example.com")
.accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToMono(Account[].class)
.delaySubscription(Duration.ofSeconds(1))
.retry()
.filter(filter)
.blockOptional(Duration.ofMinutes(2));
if (accountsOptional.isPresent()) {
for (Account account : accountsOptional.get()) {
ibanList.add(account.getIban());
}
return ibanList;
}
return null;
}
有人知道怎么做吗?任何帮助将不胜感激。
【问题讨论】:
标签: java spring spring-boot webclient spring-webflux