【发布时间】:2015-07-16 14:02:25
【问题描述】:
我正在开发一个 RestEasy 客户端以连接到已定义自己的自定义媒体类型的第 3 方 REST 服务。一个虚构的例子是
application/vnd.abc.thirdPartyThing-v1+json
注意thirdParty中的大写P。
我正在使用 RESTEasy 3.0.11 来实现我的客户端。在我对服务进行 POST 调用时,我的代码看起来像
Response response = target.request()
.post(Entity.<ThirdPartyThing>entity(
thing,
"application/vnd.abc.thirdPartyThing-v1+json"));
但是 RESTEasy 发送到服务器
Content-Type: application/vnd.abc.thirdpartything-v1+json
这是由于 RESTEasy 的 MediaTypeHeaderDelegate 类的 toString() 方法,该方法将类型和子类型 MediaTypeHeaderDelegate 小写。这应该是正确的,或者至少不重要,因为 RFC-1341 声明 Content-Type 值不区分大小写 - RFC-1341
不幸的是,第 3 方服务以区分大小写的方式检查 Content-Type,因此返回 415 UNSUPPORTED MEDIA TYPE 错误。我已经使用 curl 进行了测试,它不会改变 content-type 值,并确认这是一个案例问题。 application/vnd.abc.thirdPartyThing-v1+json 有效,application/vnd.abc.thirdpartything-v1+json 无效。
我正在提出票证,但与此同时,有什么方法可以覆盖 RESTEasy 的默认行为并发送 Content-Type 标头而不将值小写?
感谢阅读。
【问题讨论】:
标签: http-headers content-type resteasy