目前我遇到了新的Spring 5 WebClient的问题,我需要一些帮助来解决它 . 问题是:
我请求一些返回内容类型为text / html; charset = utf-8的json响应的url . 但不幸的是,我仍然得到一个例外:org.springframework.web.reactive.function.UnsupportedMediaTypeException:不支持内容类型'text / html; charset = utf-8' . 所以我无法将响应转换为DTO .
对于请求,我使用以下代码:
Flux<SomeDTO> response = WebClient.create("https://someUrl")
.get()
.uri("/someUri").accept(MediaType.APPLICATION_JSON)
.retrieve()
.bodyToFlux(SomeDTO.class);
response.subscribe(System.out::println);
顺便说一句,我接受 Headers 的哪种类型无关紧要,总是返回text / html . 那我怎么能最终转换我的回复呢?
1 回答
让服务发送带有
"text/html"
Content-Type的JSON是相当不寻常的 .有两种方法可以解决这个问题:
配置Jackson解码器也解码
"text/html"
内容;查看WebClient.builder().exchangeStrategies(ExchangeStrategies)
设置方法动态更改"Content-Type"响应标头
这是第二个解决方案的提案:
请注意,您应该只在该上下文中使用该客户端(对于此主机) . 我强烈建议尝试修复服务器返回的奇怪内容类型,如果可以的话 .