[英]http POST request to jax-rs web service
我在grails
框架中有一个jax-rs
Web服务,该服务响应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
}
}
因此,链接将为xxxx/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和@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标头中提供content-type。
在chrome的高级Rest Client中,在标题中指定:
Content-Type: application/xml
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.