我在jax-rs
框架中有一个grails
网络服务响应PUT请求并使用/生成xml或json但是当我尝试通过chrome的高级rest插件将xml输入到Web服务时错误415 Unsupported Media Type
。
我想知道如何将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文件。
请提前帮助,谢谢。
答案 0 :(得分:0)
您是否将内容类型设置为application/xml
而非默认application/x-www-form-urlencoded
?
或者,您的应用程序中是否有另一个端点,其中包含以下URL模板:
x.x.x.x/api/interface/{param}
还会消耗PUT
个请求但不接受application/xml
内容类型? (我不确定JAX-RS实现会选择哪种资源方法)
答案 1 :(得分:0)
在服务器端
@Consumes和@Produces指令应绑定到该方法。 另外,验证你所需的http方法是@POST(在这种情况下很少使用PUT方法,但如果你真的想这样,你可以自由地使用PUT。)
@POST
@Path("xmldata")
@Consumes('application/xml')
@Produces('application/xml')
String getInterfaceRepresentationXML(def xml) {
//play with xml and render xml result
}
在客户端
确保您的客户端使用正确的http方法(POST或PUT,如服务器端声明的那样)。 在http post内容中提供xml数据是不够的,您还必须告知服务器您提供给它的数据类型。您必须在http标头中提供内容类型。
在Chrome的高级休息客户端中,请在标题中指定:
Content-Type: application/xml