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