2013-12-20 57 views
0

我有一個jax-rsgrails web服務框架,它響應PUT請求並消耗/產生xml或json,但是當我嘗試通過chrome的高級rest插件將xml提供給web服務時它給出錯誤415 Unsupported Media Type
我想知道如何將xml放入Web服務?
注:我使用的應用程序/ XML內容類型 我對Web服務代碼是:http POST請求到jax-rs網絡服務

 @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

您是否將內容類型設置爲application/xml而不是默認的application/x-www-form-urlencoded

,或者你有另一個端點在以下網址模板應用程序:

x.x.x.x/api/interface/{param} 

這也消耗PUT請求,但不接受application/xml內容類型? (我不知道該資源的方法將由JAX-RS實現選擇,雖然)

+0

嘿,我已經使用的應用程序/ xml和我已經更新了整個服務代碼,並有你爲什麼提交表決,其他這樣的資源 –

+0

請求您的方法是否使用@POST註釋? –

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的先進REST客戶端,請在標題:

Content-Type: application/xml 
+0

可以在Java類型上設置'@ Consumes'和'@ Produces'註釋,並且將用於每種方法,除非在方法級別上被覆蓋。 –