簡體   English   中英

對jax-rs Web服務的HTTP POST請求

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM