web服务接受参数无法调用

时间:2015-07-19 16:20:52

标签: java hibernate web-services

我正在调用一个使用hibernate在数据库中插入一些数据的Web服务,我只是在html页面中放置一个按钮

<button type="button" onclick="testMe()">Click Me!</button>

其中testMe()方法是调用数据库的方法。 这是功能:

 function testMe() {
                $.ajax({
                    url: "http://localhost:8084/RESTfulExample/rest/message/insertdb",
                    type: "post"
                });

            }

这是在数据库中插入数据的Web服务

@POST
@Path("/insertdb")
public void printDB() {
        DB db = new DB();
        db.insert();
        System.out.println("Done!!!");

}

直到现在一切正常,Web服务成功地在数据库中插入数据,但如果我想用这样的参数调用Web服务怎么办

@POST
@Path("/insertdb")
public void printDB(String u) {
   System.out.println("inside web service");
}

并确保像这样修改html页面

    function testMe() {
            var params = {"firstName": "test", "lastName": "test2"};
            var jsonData = JSON.stringify(params);
                $.ajax({
                    url: "http://localhost:8084/RESTfulExample/rest/message/insertdb",
                    type: "post",
                    dataType: "json",
                    data: jsonData
                });

            }

当我尝试这个并调用Web服务时,不会打印应该在printDB函数中打印的行。 调用带参数的Web服务时,我的代码有什么问题?

2 个答案:

答案 0 :(得分:0)

我可以在您的WebService printDB()中看到您正在设置@GET http方法: -

@GET
@Path("/insertdb")
public void printDB(String u) {
   System.out.println("inside web service");
}

但在$.ajax来电中,您发送了type: "post",所以您可以尝试使用您的网络服务printDB(),从@GET更改为@POST

答案 1 :(得分:0)

我认为问题在于您在服务器端使用@GETAjax方法中使用POST方法进行注释。不同之处在于,POST数据在请求正文中发送,而不是作为URL参数发送。

因此,请考虑更改/实现@POST带注释的方法。