您的位置:首页 > 其它

【WebService开发】其他调用webservice的方法

2016-03-19 21:55 393 查看
<p><strong>1.ajax<span style="font-family:宋体;">调用</span><span style="font-family:Calibri;">webservice</span></strong></p>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ajax请求webservice</title>
<script type="text/javascript">
window.onload = function() {
document.getElementById("btn1").onclick = function() {
var xmlHttp = GetXmlHttpObject();
if (xmlHttp == null) {
alert("您的浏览器不支持AJAX!");
return;
}
xmlHttp.onreadystatechange=function(){
if (xmlHttp.readyState==4 && xmlHttp.status==200){
var dom = xmlHttp.responseXML;
var returnEle = dom.getElementsByTagName("return")[0];
var nameVal = returnEle.firstChild.data;
alert(nameVal);
}
}
xmlHttp.open("POST","http://192.168.0.103:8989/day01_ws/hellows");
var name = document.getElementById("name").value;
var data = '<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"><soap:Body><ns2:sayHello xmlns:ns2="http://ws.xdy.com/"><arg0>'+name+'</arg0></ns2:sayHello></soap:Body></soap:Envelope>';
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(data);

}
function GetXmlHttpObject() {
var xmlHttp = null;
try {
// Firefox, Opera 8.0+, Safari
xmlHttp = new XMLHttpRequest();
} catch (e) {
// Internet Explorer
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
return xmlHttp;
}
}
</script>
</head>
<body>
姓名:<input type="text" id="name">
<button id="btn1">ajax请求webservice</button>
</body>
</html>

2.jquery调用webservice

$(function(){
$.post(
"http://192.168.0.103:8989/day01_ws/hellows",
'<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">'
+'<soap:Body><ns2:sayHello xmlns:ns2="http://ws.xdy.com/"><arg0>xiongdy</arg0></ns2:sayHello></soap:Body></soap:Envelope>',
function(msg){
alert($(msg).find("return").text());
},
"xml"
);
});

3.HttpURLConnection调用WebService

上面两种请求都存在跨域的问题。如何解决ajax跨域请求webservice的问题?

在客户端应用中使用java编码去请求webservice,在页面中去请求自己的后台。本示例在servlet里请求webservice,页面提交到servlet。

Servlet代码:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name = request.getParameter("name");
System.out.println("doPost "+name);

String data = "<soap:Envelope xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><ns2:sayHello xmlns:ns2='http://ws.xdy.com/'><arg0>"+name+"</arg0></ns2:sayHello></soap:Body></soap:Envelope>";
URL url = new URL("http://192.168.0.103:8989/day01_ws/hellows");

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoInput(true);
connection.setRequestProperty("Content-Type", "text/xml;charset=utf-8");

OutputStream os = connection.getOutputStream();
os.write(data.getBytes("utf-8"));

int responseCode = connection.getResponseCode();
if(responseCode==200) {
InputStream is = connection.getInputStream();//String xml
System.out.println("return "+is.available());

response.setContentType("text/xml;charset=utf-8");
ServletOutputStream outputStream = response.getOutputStream();

byte[] buffer = new byte[1024];
int len = 0;
while((len=is.read(buffer))>0) {
outputStream.write(buffer, 0, len);
}
outputStream.flush();
}
}

页面代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>ajax请求webservice</title>
<script type="text/javascript" src="jquery-1.4.3.js"></script>
<script type="text/javascript">
$(function(){
$("#btn").click(function(){
var name = document.getElementById("name").value;
$.post(
"HttpURLConnectionServlet",
"name="+name,
function(msg) {
var $Result = $(msg);
var value = $Result.find("return").text();
alert(value);
},
"xml"
);
});
});
</script>
</head>

<body>
用户名:
<input id="name" name="username" value="" />
<br>
<button id="btn">HttpURLConnection请求webservice</button>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: