2013-08-07 220 views
0

我正在嘗試從瀏覽器做一個簡單的發佈請求,並且415 Unsupported Media顯示在瀏覽器的控制檯中,它在控制檯中也表示Typetext/html,也許我是mising這裏有一些愚蠢的事情,但我認真地做了一個android客戶端的post請求,一切都在服務器端找到,所以我猜(因爲我不熟悉js)這是一個javascript問題,我在這裏,這裏是的代碼所需要的部分:Ajax向Jax-rs服務發送請求

AJAX(這個函數被調用send,它做一些事情之前創建的JSON,這部分它的確定和測試中,JSON是被成功genereated):

$.ajax({ 
     url: 'webresources/serverConfig/save/', 
     type: 'post', 
     dataType:'json', 
     data: jsonObj 
    }); 

我如何調用JavaScript的HTML表單:

<form action="javascript:send()" method="post"> 

JAX-RS服務:

@Path("serverConfig/") 
public class ConfigurationSaverService { 

@POST 
    @Path("save/") 
    @Consumes(MediaType.APPLICATION_JSON) 
    public void save(Configuration configuration){ 
    //config stuffs here. 
} 

Edit:由於@ adrianplattner的答案,它說我使用的是非常重要的glassfish 4.0,所以我不需要添加球衣的依賴關係,我也嘗試glashfish 3.1,仍然會得到相同的HTTP錯誤。

EDIT 2:標題:

headers: { 
    'Accept': 'application/json', 
    'Content-Type': 'application/json' 
}, 

回答

0

您可以添加球衣依賴性:

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-json</artifactId> 
    <version>1.11</version> 
</dependency> 

應該可以解決問題烏爾

0

默認jQuery.ajax()調用application/x-www-form-urlencoded; charset=UTF-8Content-Type(見documentation ),但您期望在您的JAX-RS資源中使用application/json。將您呼叫的contentType參數設置爲application/json

+0

我做到了這一點,但它沒有工作,我也嘗試設置一些參數在頭像像這樣的答案在這裏http://stackoverflow.com/questions/11492325/post-json-fails-with-415-unsupported -media-type-spring-3-mvc但它沒有解決問題,我需要一個實體包裝或什麼? – JosephChilberry

+0

你可以嘗試打開LoggingFilter(如本答案http://stackoverflow.com/a/18033725/290799中的「編輯1」中所述),並與我們共享請求的標題? –

+0

現在編輯頭,我不知道如何使我的maven Jax-rs項目產生web.xml,我真的不想手動添加它。 – JosephChilberry