2

我正在使用 jax-rs 编写一个基本的 Web 服务。我正在使用以下 JQuery 测试应用程序。我可以使用 GET 参数很好地访问参数,但是当我使用 POST 时,它会失败。我使用以下 JQuery 来测试仅将“POST”切换为“GET”。

$.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 部分没有任何问题。

@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 方法访问参数?

4

1 回答 1

3

如果您发送表单数据,您应该指定将使用哪种类型的内容服务器。所以你应该用@Consumes(MediaType.APPLICATION_FORM_URLENCODED). 换句话说,POST 方法应该是这样的:

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
// rest of the code
于 2012-11-07T18:16:12.947 回答