Tôi đang thử số mới WebClient
từ Spring 5 (5.0.0.RC2) trong một codebase sử dụng lập trình phản hồi và tôi đã lập bản đồ thành công phản hồi JSON từ điểm cuối tới DTO trong ứng dụng của tôi, hoạt động rất đẹp:Cách tốt nhất có được một mảng byte từ ClientResponse từ Spring WebClient?
WebClient client = WebClient.create(baseURI);
Mono<DTO> dto = client.get()
.uri(uri)
.accept(MediaType.APPLICATION_JSON)
.exchange()
.flatMap(response -> response.bodyToMono(DTO.class));
Tuy nhiên, bây giờ tôi đang cố gắng để cơ thể phản hồi từ một thiết bị đầu cuối trong đó sử dụng giao thức Buffers (dữ liệu nhị phân từng là application/octet-stream
), vì vậy tôi muốn lấy raw bytes từ phản ứng, mà Sau đó tôi sẽ tự bản đồ đối tượng.
tôi đã nhận nó làm việc như thế này sử dụng Bytes
từ Google Ổi:
Mono<byte[]> bytes = client.get()
.uri(uri)
.accept(MediaType.APPLICATION_OCTET_STREAM)
.exchange()
.flatMapMany(response -> response.body(BodyExtractors.toDataBuffers()))
.map(dataBuffer -> {
ByteBuffer byteBuffer = dataBuffer.asByteBuffer();
byte[] byteArray = new byte[byteBuffer.remaining()];
byteBuffer.get(byteArray, 0, bytes.length);
return byteArray;
})
.reduce(Bytes::concat)
này hoạt động, nhưng có một cách thanh lịch dễ dàng hơn để có được các byte?