我正在尝试使用spring-webclient使用一个api。下面是我的代码。代码在kotlin
webClient.post()
.uri(“some url”)
.body(Mono.just(request))
.retrieve()
**.bodyToMono<UUID>()**
.awaitSingle()
它在下面抛出错误
org.springframework.web.reactive.function.UnsupportedMediaTypeException:bodyType = java.util.UUID不支持内容类型'text / plain; charset = UTF-8'
如果我尝试将其转换为字符串,则工作正常。下面的代码
webClient.post()
.uri(“some url”)
.body(Mono.just(request))
.retrieve()
**.bodyToMono<String>()**
.awaitSingle()
我期望API发出的响应如下
"response": {
"headers": {
"Content-Type": "text/plain;charset=UTF-8"
},
"status": 200,
"body": "6ea4c979-5e05-4e72-9007-c4644bef5672"
}
答案 0 :(得分:0)
您之所以收到该异常,是因为响应内容类型是text/plain;charset=UTF-8
,而不是您发布的异常消息中所述的application/json
。在异常消息中,它还表示您正在尝试将响应主体解析为UUID。我不确定您为什么要这样做,但它将失败,因为响应正文无法映射到UUID类/对象,但这是另一个问题。
因此,要解决当前的主要问题,需要告诉杰克逊接受text/plain
的{{1}},为此,需要在application/json
方法中设置编解码器在构建exchangeStrategies
时。
检查下面的代码,它应该可以解决您的问题。
WebClient