我有一些麻煩,使得Jersey和Jquery以JSON格式傳遞數據。 在下面的最小示例中,始終將HTTP 204返回給調用JQuery客戶端。Jersey/Jquery HTTP通信和JSON數據
@Path("/path")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public class Resource {
@POST
public ReturnData postSomething(@Valid Data data) {
Log("success");
...
ReturnData returnData = ...;
return returnData;
}
}
我使用以下JQuery代碼並在每個帖子後調用錯誤函數。
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: url,
data: '{"data": "data"}',
dataType: "json",
error: function(data){
alert("fail");
},
success: function(data){
alert("success");
}
});
在螢火蟲我見上文描述的設置下面的HTTP請求/響應:
OPTIONS /path HTTP/1.1
Host: 192.168.15.109:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Origin: http://localhost
Access-Control-Request-Method: POST
Access-Control-Request-Headers: content-type
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.1 204 No Content
Date: Thu, 24 May 2012 16:10:57 GMT
Allow: OPTIONS,POST
起初我曾試圖不用的contentType一個設置:「應用程序/ JSON;字符集= utf-8的「在JQuery的帖子裏面竟然如下:
POST /path HTTP/1.1
Host: 192.168.15.109:8080
User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:12.0) Gecko/20100101 Firefox/12.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
Referer: http://localhost/test.html
Content-Length: 104
Origin: http://localhost
Pragma: no-cache
Cache-Control: no-cache
HTTP/1.1 415 Unsupported Media Type
Date: Thu, 24 May 2012 16:08:55 GMT
Content-Type: text/plain;charset=UTF-8
Cache-Control: must-revalidate,no-cache,no-store
Content-Length: 72
Cache-Control: no-cache
我在想,客戶端和服務器無法查找數據類型他們都同意出於某種原因。我覺得很奇怪,在將contentType設置爲JSON時,accept頭文件不包含JSON。
Log(「success」);在服務器端永遠不會執行。
有人能指出我正確的方向嗎?
順便說一句:Apache HttpClient測試可以發佈並從服務器接收json而沒有問題 – Hansi
這也是我的問題。我花了幾個小時嘗試每一個可用的建議,但我無法讓它工作。看起來,.ajax無法將其數據轉換爲JSON對象,正如Jersey預期的那樣。 – Abbas