2011-04-30 111 views
6

我正在使用Apache-CXF创建REST Web服务并尝试提交表单。如何在Apache CXF jax-rs(REST)中提交JSON数据作为请求主体

服务器:
这是我的方法,它有望获得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"

+0

有必要在要求身体有根的名字,我需要有相同的服务为你的,但我不明白的根名称在我的请求json字符串。 – vashishth 2014-03-28 07:15:37

回答

2

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

3

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

2

对不起,对于迟到的答案,但它可能会对其他人。

由于jackson需要它来反序列化JSON消息,所以您应该重复检查您的Customer类是否使用JAXB的@XmlRootElement注释。

0

您必须添加自定义页眉告知什么样的数据要发送回客户端 如: 标题名称:内容类型 页眉值:应用程序/ JSON

1

我使用面临着同样的问题CXF 2.7.4与Jasckon 2.XX。但是当我升级到CXF 2.7.7时它已经修复。或者使用CXF 2.7.4的Jackson 1.9.X。

0

我有同样的问题。解决方案是从json字符串中删除bean类名称。 在你的情况,应该发送的身体将是JSON,

{"name":"Arnav Awasthi","id":6} 
相关问题