泽西RESTful api中不支持的媒体类型

时间:2013-02-26 16:06:01

标签: jersey

我正在尝试使用Jersey库构建RESTful API,但它给了我一个例外。 这是我的Docs课程

@XmlRootElement
@XmlAccessorType(XmlAccessType.PUBLIC_MEMBER)
public class Docs {

    @XmlElement(name = "field")
    public String field;

    @XmlValue
    public String content;

}


@Path("/update")
public class Update {
    @POST
    @Path("/xml")
    @Consumes(MediaType.APPLICATION_XML)
    @Produces(MediaType.APPLICATION_XML)
    public String createIndexXML(Docs docs)
            throws Exception {
        System.out.println(docs.content);
        return "It works";

    }

}

如果我尝试使用CURL进行检查,则会抛出Error 415 Unsupported Media Type

curl -XPOST "http://localhost:8089/update/xml" -d '<docs>
          <field>title</field>
</docs>'

2 个答案:

答案 0 :(得分:1)

您需要将内容类型添加到请求标头中。添加-H "Content-Type: application/xml" to your curl`来电。

我想你也会发现你的bean注释有问题 - 但这是另一个问题...

答案 1 :(得分:0)

这应该有效:

curl -H "Content-Type: application/xml"
-X POST -d "<docs><field>title</field></docs>" "http://localhost:8089/update/xml"

您还应该尝试Accept: application/xml;注意定义@Produces@Consumes!请参阅Using @Consumes and @Produces to Customize Requests and Responses