【发布时间】:2021-11-07 14:10:33
【问题描述】:
我正在使用 Spring 集成到第三方 API。此 API 验证 Content-Type 标头并要求它完全
application/json;profile=https://se.digitalreceipts.net/schemas/json/retail/v1.0
下面的代码是我对 API 进行的 POST 调用的相关部分。
webClient.post()
.uri("/dr/v1/receipts")
.attributes(clientRegistrationId(clientRegistrationId))
.header("Content-Type", "application/json;profile=https://se.digitalreceipts.net/schemas/json/retail/v1.0")
执行此请求时抛出异常:
org.springframework.http.InvalidMediaTypeException: Invalid mime type "application/json;profile=https://se.digitalreceipts.net/schemas/json/retail/v1.0": Invalid token character ':' in token "https://se.digitalreceipts.net/schemas/json/retail/v1.0"
at org.springframework.http.MediaType.parseMediaType(MediaType.java:620) ~[spring-web-5.3.10.jar:5.3.10]
似乎 spring 不允许在 Content-Type 标头中使用冒号。
这是一个问题,因为我正在集成的 API 绝对要求内容类型标头与之前指定的完全相同。
例如,我不能用引号写值
application/json;profile="https://se.digitalreceipts.net/schemas/json/retail/v1.0"
我正在寻找一种解决方案,我可以使用 Spring WebClient 输入所需的 Content-Type 标头。
【问题讨论】:
标签: java spring http-headers spring-webclient