繁体   English   中英

如何在 Apache CXF jax-rs (REST) 中提交 JSON 数据作为请求正文

[英]How to submit JSON data as request body in Apache CXF jax-rs (REST)

我正在使用 Apache-CXF 创建 REST web 服务并尝试提交表单。

服务器:
这是我的方法,预计会得到json数据。

@POST
@Path("/addCustomer/")
@Consumes(MediaType.APPLICATION_JSON)

//{"Customer":{"name":"Some Name","id":6}}

public Customer addCustomer(Customer customer){

   logger.debug(customer);
   return customer;

}

客户端:我正在使用 firefox REST 插件提交请求:使用 REST 客户端,我发布了以下 Z4636DEEC76ECDF24DA 请求正文:

{"Customer":{"name":"Arnav Awasthi","id":6}}

但我收到"415: Unsupported Media Type"

使用 restclient,一个火狐插件,并将 http 标头添加为 Accept:application/json,content-type: application/json。

很抱歉回答迟了,但它可能对其他人有用。

您应该仔细检查您的客户 class 是否使用 JAXB 的 @XmlRootElement 进行注释,因为 jackson 需要它来反序列化 JSON 消息。

你必须想办法告诉 firefox 将 content-type 设置为 application/json。 该错误表明它正在发送其他内容。

前段时间我有同样的错误。 似乎根本原因是异常“没有为请求 class 找到消息正文阅读器”。

根据http://www.javatips.net/blog/2012/02/cxf-restful-tutorial我添加了 jettison 库来解决这个问题。

我在使用 CXF 2.7.4 和 Jasckon 2.XX 时遇到了同样的问题,但是当我升级到 CXF 2.7.7 时它得到了修复。 或者使用 Jackson 1.9.X 和 CXF 2.7.4。

您必须添加自定义标头以通知客户端您要发送回什么样的数据,例如:Header 名称:内容类型标头值:应用程序/json

我有同样的问题。 解决方案是从 json 字符串中删除 bean class 名称。 在您的情况下,应该按正文发送的 Json ,

{"name":"Arnav Awasthi","id":6}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM