【问题标题】:Spring WebClient is retrieving bad Content-TypeSpring WebClient 正在检索错误的 Content-Type
【发布时间】:2020-11-08 01:31:39
【问题描述】:

当我按如下方式运行 WebClient 时:

WebClient.create(apiUrl)
                .get()
                .uri(uriBuilder -> uriBuilder
                        .path("/some/{productId}/")
                        .queryParam("ws_key", apiKey)
                        .build(productId)
                )
                .accept(MediaType.APPLICATION_XML)
                .retrieve()
                .bodyToMono(MyClass.class)
                .block();

服务器返回值为“text/html”的标头 Content-Type。

当我使用 Chrome 发出请求时,它会正确返回“text/xml”(它是一个 XML 页面)。

我尝试了几个“接受”参数,但总是得到“text/html”。

对这个问题有任何想法吗? 谢谢!

【问题讨论】:

  • 您是否尝试使用MediaType.TEXT_XML?您的 Chrome 请求中包含 Accept 标头的内容是什么?
  • 您是否真的查看了您正在获取 xml 并且您没有收到带有 html 页面的错误消息或类似内容的响应。

标签: spring webclient spring-webflux spring-webclient


【解决方案1】:

尝试使用curl 来检查它,添加-H 来设置标题。

curl http://xxx/some/product -H "Accept:text/xml"

如果它得到相同的结果(html)。我觉得服务器端应该有问题。

当使用浏览器访问 API 时,我认为它的 accept 标头默认设置为“*/*, text/html”序列或类似。

如果服务器端是自己控制的,请显式设置响应体的内容类型。

【讨论】:

    猜你喜欢
    • 2019-04-15
    • 2010-12-08
    • 2012-07-04
    • 2020-07-30
    • 1970-01-01
    • 2011-04-24
    • 2012-01-21
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多