xml - 调用 Jersey api 时无法指定接受哪种响应类型

标签 xml json rest jaxb jersey

我有一个 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/

相关文章:

.net - xsl :template match doesn't find matches

mysql - 从 Hive 表中提取 XML 数据并解析数据

json - 在 iex 中运行 elixir poison 命令

ios - 如何在 swift 3 中使用 Alamofire 制作并发送字典数组(JSON 格式)发送到服务器

javascript - 使用包含撇号的值进行 REST 调用

javascript - 如何使用 XSLT 和 javascript 从 XML 创建 HTML?

.net - 滥用 XmlReader ReadSubtree()

json - 语法错误 : JSON Parse error: Unrecognized token '<'

rest - Google 电子表格 REST API v4 上的 "PERMISSION_DENIED"

c# - 在 .NET 环境中使用 REST API 的最常见方法是什么? C#、JS 还是其他语言?