Java 对jax rs web服务的http POST请求

Java 对jax rs web服务的http POST请求,java,web-services,rest,grails,jax-rs,Java,Web Services,Rest,Grails,Jax Rs,我在grails框架中有一个jax-rsweb服务,它响应PUT请求并使用/生成xml或json,但当我试图通过chrome的高级rest插件将xml放入web服务时,它会给出错误415不支持的媒体类型。 我想知道如何将xml放入web服务中? 注意:我使用application/xml作为内容类型 我的web服务代码是: @Path('/api/interface') @Consumes(['application/xml','application/json'])

我在
grails
框架中有一个
jax-rs
web服务,它响应PUT请求并使用/生成xml或json,但当我试图通过chrome的高级rest插件将xml放入web服务时,它会给出错误
415不支持的媒体类型

我想知道如何将xml放入web服务中?
注意:我使用application/xml作为内容类型 我的web服务代码是:

     @Path('/api/interface')
        @Consumes(['application/xml','application/json'])
        @Produces(['application/xml','application/json'])
        class InterfaceResource {

        @POST
            @Path("xmldata")
            String  getInterfaceRepresentationXML(def xml) {
                //play with xml and render xml result
            }
        }
因此,该链接将是
x.x.x.x/api/interface/xmldata
,它不接受XML文件。
请帮助,提前感谢。

您是否将内容类型设置为
application/xml
,而不是默认的
application/x-www-form-urlencoded

或者,您的应用程序中是否有另一个具有以下URL模板的端点:

x.x.x.x/api/interface/{param} 
哪个还使用
PUT
请求,但不接受
application/xml
内容类型?(不过,我不确定JAX-RS实现会选择哪种资源方法)

在服务器端

@Consumes和@products指令应该绑定到该方法。 另外,验证您所需的http方法是@POST(在这种情况下很少使用PUT方法,但如果您真的希望这样做,您可以自由使用PUT)

在客户端

确保您的客户端使用正确的http方法(POST或PUT,如服务器端声明的)。 在HTTPPOST内容中提供xml数据是不够的,还必须通知服务器您将向其提供什么样的数据。您必须在http头中提供内容类型

在chrome的高级rest客户端中,在标题中指定:

Content-Type: application/xml

嘿,我已经使用了application/xml,并且我已经更新了整个服务代码,并且没有其他这样的资源。如果您的方法被@POST注释,为什么要提交PUT请求呢?
@Consumes
@products
注释可以在Java类型上设置,并且将用于每个方法,除非在方法级别重写。
Content-Type: application/xml