2014-02-11 82 views
1

我已經通過了這個link。但這並沒有幫助我。如何使用JSON數據向澤西島休息服務發送ajax調用?

我正在使用jersey lib v1.17.1。 我的球衣休息服務:

@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
@Produces({MediaType.APPLICATION_JSON}) 
@Path("/post1") 
public ResponseBean post1(@QueryParam("param1")String param1) 
{ 
    return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true); 
} 

網址是:/test/post1

我的Ajax調用:

var d = {"param1":"just a dummy data"}; 
    $.ajax({ 
     type : "POST", 
     url : "http://localhost:7070/scl/rs/test/post1", 
     contentType :"application/json; charSet=UTF-8", 
     data : d, 
     dataType : "json" 
    }) 
    .done(function(data){ 
     console.log(data); 
    }) 
    .fail(function(data){ 
     console.log(data); 
    }); 

它擊中我的休息服務,但作爲param1我送花兒給人越來越空值。另一種解決方案是添加JavaBean與@XMLRootElement這將編組/解組Java對象到JSON,反之亦然,但我不想使用它。
有沒有什麼辦法可以發佈數據,並使用適當的註釋如@QueryParam或類似的東西來接收它? 請幫忙

回答

2

您的服務器端代碼應該是這樣的:

@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
@Produces({MediaType.APPLICATION_JSON}) 
@Path("/post1") 
public ResponseBean post1(Data param1) 
{ 
    return ResponseFactory.createResponse(param1, "TEST", "TEST", null, true); 
} 

其中Data@XmlRootElement註釋一(POJO)類和對應於JSON數據你的客戶會送什麼(即有param1場與getter和setter)。 JAX-RS實現將POST的主體解組到Data的實例中。

@QueryParam註釋用於檢索(通常)GET請求中的查詢參數。查詢參數是問號後面的參數(?)。例如:當處理以下請求時,@QueryParam("start") String start將映射設置爲1GET http://foo.com/bar?start=1,但這不是您在您的案例AFAICS中所做的。

+0

謝謝澤維爾.. – user3137239

0

@XMLRootElement是做這件事的方法,因爲在使用任何元素之前json必須解組。

1
You can simply take Post dat as a string and then you can parse it using JSONObject. 
@POST 
@Consumes({MediaType.APPLICATION_JSON}) 
@Produces({MediaType.APPLICATION_JSON}) 
@Path("/post1") 
    public Response postStrMsg(String msg) { 
     String output = "POST:Jersey say : " + msg; 
     return Response.status(200).entity(output).build(); 
    }