2012-11-07 5 views
2

jax-rs를 사용하여 기본 웹 서비스를 작성하고 있습니다. 다음 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');} 
}); 

자바 끝은 다음과 같습니다. 나는 get 부분에 문제가 없다는 것을 명심하십시오.

@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를 사용할 때 null을 인쇄합니다. POST 메서드를 사용하여 매개 변수에 액세스하려면 무엇이 필요합니까?

답변

3

양식 데이터를 보내는 경우, 사용할 컨텐츠 서버 유형을 지정해야합니다. 따라서 POST 메서드에 @Consumes(MediaType.APPLICATION_FORM_URLENCODED)이라는 주석을 달아야합니다. 즉, POST 메소드는 다음과 같아야합니다.

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

그리고 여기에있는 Java 메소드가 POST 데이터를 성공적으로 가져올 수 있습니다. <3 불행히도 jQuery는 콜백 매개 변수에 문제가 있다고 의심되는 오류를 catch합니다. 왜냐하면 인쇄하려고하면 null입니다. – Pierce

+0

request.getParameter ("callback")을 사용하여 콜백 매개 변수를 가져올 수 있지만 약간 해로운 느낌입니다. @QueryParam 또는 이와 유사한 것으로 전달할 수있는 다른 방법이 있습니까? (@QueryParam이 작동하지 않았다.) – Pierce

관련 문제