我一直在研究响应式编程,最近尝试使用 Spring WebFlux 构建 POC。我想从简单开始,只使用 WebClient 下载图像;具体来说https://greatatmosphere.files.wordpress.com/2013/02/great-atmosphere-149-tenaya-lake-yosemite-national-park-2.jpg
我尝试过以下代码
String block = WebClient.create("https://greatatmosphere.files.wordpress.com/2013/02/great-atmosphere-149-tenaya-lake-yosemite-national-park-2.jpg")
.get()
.accept(MediaType.IMAGE_JPEG)
.retrieve()
.bodyToMono(String.class)
.doOnError(WebClientResponseException.class,
ex -> System.out.println(ex.getStatusCode() + ": " + ex.getResponseBodyAsString()))
.log()
.block();
System.out.println("output:" + block);
但它没有按预期工作。看起来数据在不断地流式传输并且获取请求不会终止。
我确信我错过了一些简单的东西,但我似乎无法弄清楚。我尝试了多种参数,但结果都是一样的。
如何使用 WebClient 下载图像然后终止?
最佳答案
将图像捕获为byte[]
而不是String
byte[] image = WebClient.create("https://greatatmosphere.files.wordpress.com/2013/02/great-atmosphere-149-tenaya-lake-yosemite-national-park-2.jpg")
.get()
.accept(MediaType.IMAGE_JPEG)
.retrieve()
.bodyToMono(byte[].class)
.block();
关于java - Spring WebClient 下载图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56998855/