[英]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.