2013-10-28 15 views
0

我有一個JAX-RS項目,其中POST不起作用。我有@GET工作正常的網址。除了這個@POST以外,一切似乎都正常。消費JSON作爲應用程序/ x-www-form-urlencoded

@POST 
@Path("/json/insert") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes("application/x-www-form-urlencoded") 
public String postJSONInsert(
    @FormParam("instance") String instance, 
    @FormParam("db") String table) { 

    String json; 
    EDPObject edp_obj = new EDPObject(); 

    try { 

     json = edp_obj.insert("json", instance, table); 

    } catch(Exception e) { 

     edp_obj.endSession(); 
     json = handleJSONError(e); 

    } 

    return json; 

} 

獲得的螢火500 not yet connected試圖在客戶端這個時候:

$.ajax('http://127.0.0.1:8070/sixaxis/webapi/json/insert', { 
    data: { 
     db: '17:2', 
     instance: 'shawn' 
    }, 
    dataType: 'json', 
    type: 'POST' 
}); 

回答

4

你試過:

@Consumes(MediaType.APPLICATION_JSON) 

因爲你的jQuery是:

dataType:'json' 

更新(感謝反饋): 然後該方法至少應該是:

@POST 
@Path("/json/insert") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public String postJSONInsert(Map<String,Object> params){ 
    // Your business logic 
} 
+0

你應該補充一點,在這種情況下@ FormParam是沒有用的。 JSON應映射到一個對象。 JAXB可以用於此。 – 2013-10-29 06:32:50

+0

是的,我已經嘗試了許多其他變化。似乎工作的唯一的東西是它返回一個javax.ws.rs.core.Response對象而不是一個String。 – shrimpwagon

+0

也許您可以發佈您的代碼樣本,供我們查看? –