使用 jquery 调用网络服务
call webservice using jquery
我已经构建了一个 java 网络服务,我正在尝试使用 jquery ajax 来调用它
而且我无法获得简单的输出。我得到的是调用 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 网络服务
@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>
如何获得像 "success" 或 "fail"
这样的简单结果
试试这个...
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 服务 header 中将数据类型声明为 JSON,但将 object 作为数据传递对我来说从未奏效。将其作为字符串传递,使用 JSON.stringify()
总能解决我的问题。
这是与 C# 网络服务相关的,因此可能不相关。如果不是我会删除这个post,而不是误导以后在这里绊倒的人。
您的网络服务是 JAX-WS 网络服务。您不能在不创建客户端的情况下调用 JAX-WS Web 服务(即直接通过 jQuery)。
您可以通过两种方式解决此问题:
为您的 Web 服务创建客户端(使用 WSDL),然后创建简单的 servlet,它会在服务器端调用您的 Web 服务。您可以通过 jQuery 调用此 Servlet。使用以下 link 创建 Web 服务客户端:
http://docs.oracle.com/javaee/6/tutorial/doc/bnayn.html
或
创建一个 RESTful 网络服务,您可以使用 http(通过 jQuery)直接调用它。对于 REST Web 服务,请参阅下面 link 中描述的 JAVA EE 教程:
我已经构建了一个 java 网络服务,我正在尝试使用 jquery ajax 来调用它 而且我无法获得简单的输出。我得到的是调用 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 网络服务
@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>
如何获得像 "success" 或 "fail"
这样的简单结果试试这个...
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 服务 header 中将数据类型声明为 JSON,但将 object 作为数据传递对我来说从未奏效。将其作为字符串传递,使用 JSON.stringify()
总能解决我的问题。
这是与 C# 网络服务相关的,因此可能不相关。如果不是我会删除这个post,而不是误导以后在这里绊倒的人。
您的网络服务是 JAX-WS 网络服务。您不能在不创建客户端的情况下调用 JAX-WS Web 服务(即直接通过 jQuery)。
您可以通过两种方式解决此问题:
为您的 Web 服务创建客户端(使用 WSDL),然后创建简单的 servlet,它会在服务器端调用您的 Web 服务。您可以通过 jQuery 调用此 Servlet。使用以下 link 创建 Web 服务客户端:
http://docs.oracle.com/javaee/6/tutorial/doc/bnayn.html
或
创建一个 RESTful 网络服务,您可以使用 http(通过 jQuery)直接调用它。对于 REST Web 服务,请参阅下面 link 中描述的 JAVA EE 教程: