2012-11-07 52 views
2

我正在使用jax-rs編寫一個基本的web服務。我正在使用以下JQuery測試應用程序。我可以使用GET參數訪問參數,但是當我使用POST時,它失敗。我使用以下JQuery來測試只將「POST」切換到「GET」。使用JAX-RS和jquery.ajax檢索參數()

$.ajax({ 
    type: "POST", 
    url: "http://localhost:8080/MyWebService/", 
    data: 'text=this is text', 
    dataType: 'jsonp', 
    success: function(data){ 

     console.log(data); 

    }, 
    error: function(){alert('failure');} 
}); 

java結束如下所示。請記住,我對獲取部分沒有任何問題。

@GET 
public Response getWork(@QueryParam("callback") String callbackName, @QueryParam("text") String searchText, 
     @Context HttpServletResponse response, @Context HttpServletRequest request) throws JsonGenerationException, 
     JsonMappingException, IOException { 
      System.out.println(searchText); 
    return work(callbackName, searchText, response, request); 
} 

@POST 
public Response postWork(@FormParam("callback") String callbackName, @FormParam("text") String searchText, 
     @Context HttpServletResponse response, @Context HttpServletRequest request) throws JsonGenerationException, 
     JsonMappingException, IOException { 
    System.out.println(searchText); 
    return work(callbackName, searchText, response, request); 
} 

當使用GET,它打印文本,但使用POST時,它打印空。需要使用POST方法訪問參數需要什麼?

回答

3

如果您發送表單數據,則應指定服務器將使用的內容類型。所以你應該用@Consumes(MediaType.APPLICATION_FORM_URLENCODED)註釋POST方法。換句話說,POST方法應該是這樣的:

@POST 
@Consumes(MediaType.APPLICATION_FORM_URLENCODED) 
// rest of the code 
+0

而且我們擁有它,java現在可以成功地檢索POST數據! <3不幸的是,jQuery現在捕獲了一個錯誤,我懷疑這是一個回調參數的問題,因爲當我嘗試打印它時,它是空的。 – Pierce

+0

我可以通過request.getParameter(「callback」)獲得回調參數,但是這對我來說有點冒險。有沒有另外一種方法可以讓它通過@QueryParam或類似的東西傳入? (@QueryParam沒有順便工作) – Pierce