我有一个 Jersey api,之前已设置为使用 XML 进行响应(JAXB 编码、@Produces("application/xml"))。我现在想要添加使用 JAXB/JSON 兼容性请求 JSON 格式响应的功能。
我将 @Produces 注释的参数更改为 {"application/json", "application/xml"},它将 JSON 设置为默认响应类型。然后,我进行以下调用,以使用 cUrl 通过电子邮件获取用户:
curl -k https://api.mywebservice.com/service/user/email/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="02646d6d426063702c616d6f" rel="noreferrer noopener nofollow">[email protected]</a>
按预期返回 JSON 响应。
curl -k -H "accepts: application/xml" -H "content-type: application/xml" https://api.mywebservice.com/service/user/email/<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="27414848674546550944484a" rel="noreferrer noopener nofollow">[email protected]</a>
还生成 JSON 响应。
当然,我做的第一件事是将注释切换为 @Produces{"application/xml", "application/json"},然后无法再获得 JSON 响应,即使我在 header 中指定了一个。
如有任何想法或建议,我们将不胜感激。谢谢。
最佳答案
header 称为Accept
,因此您需要调用:
curl -k -H "accept: application/xml" https://api.mywebservice.com/service/user/email/[email protected]
此外,Content-Type
header 用于指定在 POST 或 PUT 请求中发送到服务器的数据的媒体类型,因此您应该为 GET 请求保留该数据类型。
关于xml - 调用 Jersey api 时无法指定接受哪种响应类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5544784/