我使用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"
。
答案 0 :(得分:3)
使用restclient,一个用于fire fox的插件,并将http标头添加为Accept:application / json,content-type:application / json。
答案 1 :(得分:2)
你必须找到一种方法来告诉firefox将content-type设置为application / json。该错误表明它正在发送其他内容。
答案 2 :(得分:2)
对于迟到的回答感到抱歉,但它可能会对其他人有用。
您应该使用JAXB的@XmlRootElement对Customer类进行双重检查,因为jackson需要它来反序列化JSON消息。
答案 3 :(得分:1)
前段时间我有同样的错误。 似乎根本原因是异常“在请求类中找不到消息正文阅读器”。
根据http://www.javatips.net/blog/2012/02/cxf-restful-tutorial 我添加了jettison库来解决这个问题。
答案 4 :(得分:1)
我使用CXF 2.7.4与Jasckon 2.X.X面临同样的问题。但是当我升级到CXF 2.7.7时,它已得到修复。或者使用Jackson 1.9.X和CXF 2.7.4。
答案 5 :(得分:0)
您必须添加自定义标头以通知客户端您要发回的数据类型 例如: 标题名称:内容类型 标题值:application / json
答案 6 :(得分:0)
我遇到了同样的问题。解决方案是从json字符串中删除bean类名。 在你的情况下,应该作为正文发送的Json是
{"name":"Arnav Awasthi","id":6}