2014-09-03 38 views
0

我用jax-rs創建rest api。我想用xml處理PUT請求。我創建方法:傑克斯 - 如何閱讀XML?

@PUT 
    @Consumes(MediaType.APPLICATION_XML) 
    @Path("/createOrder") 
    @Override 
    public void createOrder(String content) 
    { 
     ///some code 
    } 

通過PUT

Address: http://some_address/web-services/rest/createOrder 
Encoding: UTF-8 
Http-Method: PUT 
Content-Type: aplication/xml 
Headers: {Accept=[*/*], accept-encoding=[gzip,deflate,sdch], accept-language=[en-US,en;q=0.8], cache-control=[no-cache], connection=[keep-alive], Content-Length=[117], content-type=[aplication/xml], cookie=[JSESSIONID=CE083800388A447F94FBB1E75E994EA9], host=[localhost:8080], origin=[chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm], user-agent=[Mozilla/5.0 (X11; Linux i686 (x86_64)) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.94 Safari/537.36]} 
Payload: <note> 
<to>Tove</to> 
<from>Jani</from> 
<heading>Reminder</heading> 
<body>Don't forget me this weekend!</body> 
</note> 

發送數據和得到這個錯誤:

WARNING: No operation matching request path "/web-services/rest/createOrder" is found, Relative Path: /createOrder, HTTP Method: PUT, ContentType: aplication/xml, Accept: */*,. Please enable FINE/TRACE log level for more details. 

所有GET方法工作,但我不能處理PUT。怎麼做?

+3

application/xml有兩個p(在你的Content-Type頭文件中) – nablex 2014-09-03 13:39:04

回答

0

請求標頭'Content-Type'錯誤。它表示一個p lication/xml,而不是pp lication/xml。

另外我從來沒有見過Payload作爲標題。 xml內容應該位於請求的正文部分。

+0

我使用chrome插件POSTMAN測試,並將Pyalod作爲頭文件。由於@ nablex說這是兩個問題。當我將標題更改爲application/xml時,它可以工作。我將metdoh簽名更改爲public void createOrder(XMLSource源),並且流中包含我發送的xml內容。 – 2014-09-03 14:00:38