I’m trying to communicate with a Rest service that returns a simple JSON array of ints, e.g.
JavaScript
x
[1, 2, 3, 4]
I have the following code to make the call via WebClient:
JavaScript
client.get()
.uri("/achievements")
.retrieve()
.bodyToFlux<Int>()
.doOnNext { println(it) }
.doOnError { it.printStackTrace() }
.blockLast()
However, Spring returns me an empty Flux. If I replace the bodyToFlux
call with a bodyToMono<List<Int>>
, then Spring is able to deserialize the response as expected. The drawback being that I have to then manually change it back to a Flux with a redundant flatMapIterable { it }
Am I missing something or are bodyToFlux
and bodyToMono
only meant to be used with Jackson POJOs?
Advertisement
Answer
This is a bug in Spring’s WebClient implementation.