用Spring 5 WebFlux框架解码ByteArray

我试图用kotlin来使用新的Spring WebFlux框架。 而我无法找到这个代码(myService)的错误:

fun foo(): Flux<ByteArray> { val client = WebClient.create("http://byte-array-service") return client .get() .uri("/info") .accept(MediaType.APPLICATION_OCTET_STREAM) .exchange() .flatMapMany { r -> r.bodyToFlux(ByteArray::class.java) } } 

这个方法返回Flux 7893字节,我知道并不是byte-array-service发送的所有字节。 如果我使用旧式的休息模板一切正常

 fun foo(): Flux<ByteArray> { val rt = RestTemplate() rt.messageConverters.add( ByteArrayHttpMessageConverter()) val headers = HttpHeaders() headers.accept = listOf(MediaType.APPLICATION_OCTET_STREAM) val entity = HttpEntity<String>(headers) val r = rt.exchange("http://byte-array-service/info", HttpMethod.GET,entity, ByteArray::class.java) return Flux.just(r.body) } 

它将返回从byte-array-service发送的所有274124个字节

这里是我的消费者

 fun doReadFromByteArrayService(req: ServerRequest): Mono<ServerResponse> { return Mono.from(myService .foo() .flatMap { accepted().body(fromObject(it.size)) }) }