0

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

@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>'
4

2 回答 2

1

您需要将内容类型添加到请求标头中。添加-H "Content-Type: application/xml" to yourcurl 调用。

我认为您还会发现您的 bean 上的注释存在问题 - 但这是另一个问题......

于 2013-02-26T17:02:31.280 回答
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!请参阅使用 @Consumes 和 @Produces 自定义请求和响应

于 2014-02-26T09:41:59.933 回答