Я должен загрузить ZIP-файл из стороннего API. Однако, когда я использую Spring Webclient, я получаю пустой файл. Есть идеи, что я делаю не так? Каков правильный способ сохранить содержимое Flux<DataBuffer>
в файл?
Вот мой код:
WebClient client = WebClient.builder()
.clientConnector(new ReactorClientHttpConnector(httpClient1))
.baseUrl(String.format(FILE_DOWNLOAD_PATH))
.build();
WebClient.RequestBodyUriSpec method = client.method(HttpMethod.GET);
method.header("Authorization", "Bearer " + accessToken);
final Flux<DataBuffer> dataBufferFlux = method.retrieve().bodyToFlux(DataBuffer.class);
final Path path = FileSystems.getDefault().getPath("example" + new Random(200).nextInt() + ".zip");
WritableByteChannel channel = Files.newByteChannel(path, StandardOpenOption.CREATE_NEW, StandardOpenOption.WRITE);
Mono<Path> then = DataBufferUtils.write(dataBufferFlux, channel)
.map(DataBufferUtils::release)
.then(Mono.just(path));
ОБНОВЛЕНИЕ: приведенный выше код вызывается непосредственно из основного, а затем приложение закрывается. Может ли это быть проблемой?