让服务发送带有
"text/html"Content-Type的JSON 是非常不寻常的。
有两种方法可以解决此问题:
- 配置Jackson解码器也可以解码
"text/html"
内容;查看WebClient.builder().exchangeStrategies(ExchangeStrategies)
设置方法 - 快速更改“ Content-Type”响应标头
这是第二种解决方案的建议:
WebClient client = WebClient.builder().filter((request, next) -> next.exchange(request) .map(response -> { MyClientHttpResponseDecorator decorated = new MyClientHttpResponseDecorator(response); return decorated; })).build();class MyClientHttpResponseDecorator extends ClientHttpResponseDecorator { private final HttpHeaders httpHeaders; public MyClientHttpResponseDecorator(ClientHttpResponse delegate) { super(delegate); this.httpHeaders = new HttpHeaders(this.getDelegate().getHeaders()); // mutate the content-type header when necessary } @Override public HttpHeaders getHeaders() { return this.httpHeaders; }}
请注意,您仅应在该上下文中(对于此主机)使用该客户端。如果可以的话,我强烈建议您尝试修复服务器返回的那种奇怪的内容类型。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)