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

我正在使用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客户端,我发布了以下json作为请求体:

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

但我得到"415: Unsupported Media Type"

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

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

对于迟到的回答感到抱歉,但它可能会对其他人有用。

您应该使用JAXB的@XmlRootElement对Customer类进行双重检查,因为jackson需要它来反序列化JSON消息。

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

根据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。

您必须添加自定义标头以通知客户端您要发回的数据类型,例如:标题名称:内容类型标题值:application / json

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

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