WebClient.builder().baseUrl("/").filter(contentTypeInterceptor()).build();
如何修改Content-Type
收到的响应(因为我收到来自发出错误内容类型的网络服务器的响应。由于我无法控制外部服务器,我想进一步更正内容类型正确处理(例如使用杰克逊库等)。
private ExchangeFilterFunction contentTypeInterceptor() {
return ExchangeFilterFunction.ofResponseProcessor(clientResponse -> {
org.springframework.web.reactive.function.client.ClientResponse.Headers headers = clientResponse.headers();
//TODO how to headers.setContentType("myval) or headers.set("Content-Type", "myval");
//headers.asHttpHeaders(); cannot be used as it is readonly
});
}
这个问题一般可以回答如何覆盖任何 http 标头。
在我的情况下,根本原因是我收到text/html
了,但响应正文实际上是一个application/xml
. 并jackson
拒绝解析该响应,原因是:
org.springframework.web.reactive.function.UnsupportedMediaTypeException: Content type 'text/html' not supported for bodyType=MyResponse