有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

使用jquery调用java Web服务

我已经构建了一个JavaWebService,我正在尝试使用jQueryAjax调用它 我不能得到一个简单的输出。。我得到的是调用WSDL时生成的HTML页面

下面是JSP代码

checkLogin = function () {

             $.ajax({
                url : 'loginWS?method=checklogin',
                data : {
                    userName : $("#userName").val(),
                    password : $("#password").val()
                },
                success : function(responseText) {
                   $('#dvLoading').fadeOut(500);
                   alert(responseText);                       
                },
                error: function (err) {
                    $('#dvLoading').fadeOut(500);
                }
            });

这就是java Web服务

    @WebService(serviceName = "loginWS")
public class loginWS {

    @WebMethod(operationName = "checkLogin")
    @POST
    @Consumes({MediaType.APPLICATION_JSON})
    public String checkLogin(@WebParam(name = "userName") String userName, @WebParam(name = "password") String password) {

        if(userName.equalsIgnoreCase("admin") && password.equalsIgnoreCase("admin")){             
          return "success";
        }else{
            return "fail";
        }
    }

我得到的结果如下

    <html>

<head><title>

Web Services

</title></head>

<body>

<h1>Web Services</h1>

<table width='100%' border='1'>

<tr>

<td>

Endpoint

</td>

<td>

Information

</td>

</tr>

<tr>

<td>

<table border="0"><tr><td>Service Name:</td><td>{http://login.services/}loginWS</td></tr><tr><td>Port Name:</td><td>{http://login.services/}loginWSPort</td></tr></table>

</td>

<td>

<table border="0"><tr><td>Address:</td><td>http://localhost:8081/CSHS/loginWS</td></tr><tr><td>WSDL:</td><td><a href="http://localhost:8081/CSHS/loginWS?wsdl">http://localhost:8081/CSHS/loginWS?wsdl</a></td></tr><tr><td>Implementation class:</td><td>services.login.loginWS</td></tr></table>

</td>

</tr>

</table>

</body>

</html>

我怎样才能得到“成功”或“失败”这样的简单结果


共 (2) 个答案

  1. # 1 楼答案

    您的web服务是JAX-WSWeb服务。如果不创建客户机(即直接通过jQuery),就不能调用JAX-WSWeb服务

    有两种方法可以做到这一点:

    1. 为您的web服务创建客户机(使用WSDL),然后创建简单的servlet,该servlet反过来在服务器端调用您的web服务。您可以通过jQuery调用这个Servlet。使用以下链接创建web服务客户端:

      http://docs.oracle.com/javaee/6/tutorial/doc/bnayn.html

    2. 创建一个RESTful web服务,您可以使用http(通过jQuery)直接调用它。有关REST web服务,请参阅下面链接中描述的JAVA EE教程:

      https://docs.oracle.com/javaee/6/tutorial/doc/gipzz.html

  2. # 2 楼答案

    试试这个

    checkLogin = function () {
        $.ajax({
            url : 'loginWS?method=checklogin',
            data : JSON.stringify({
                userName : $("#userName").val(),
                password : $("#password").val()
            }),
            success : function(responseText) {
                $('#dvLoading').fadeOut(500);
                alert(responseText);                       
            },
            error: function (err) {
                $('#dvLoading').fadeOut(500);
                alert(err);
            }
        });
    };
    

    尽管在web服务头中将数据类型声明为JSON,但将对象作为数据传递对我来说从来都不起作用。将其作为字符串传递,使用JSON.stringify()总能解决我的问题

    这是一个C#web服务,因此可能与此无关。如果没有,我将删除这篇文章,而不是误导未来在这里遇到挫折的人