您的位置:首页 > 其它

使用ajax调用webservice

2013-06-01 11:15 337 查看
注意,使用ajax调用webservice时,尽量使用ie浏览器,如果使用chrome或者是firefox浏览器,很可能会出现以下异常

2013-6-1 11:10:02 com.sun.xml.internal.ws.transport.http.server.WSHttpHandler handleExchange
警告: Cannot handle HTTP method: OPTIONS

1、服务器端代码的书写(可以参考使用jdk调用webservice中的代码,两者是基本相同的)
2、ajax_webservice.html

<html>
<head>
<title>通过ajax调用WebService服务</title>
<script>
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
//非ie浏览器
xhr = new XMLHttpRequest();
}else{
//ie浏览器
xhr = new ActiveXObject('Microsoft.XMLHttp');
}
return xhr;
}
var xhr =getXhr();
function sendMsg(){
var name = document.getElementById('name').value;
//服务的地址
var wsUrl = 'http://127.0.0.1:6790/hello';

//请求体
var soap= '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:q0="http://webservice.njupt.com/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">'
+'<soapenv:Body><q0:sayHello><arg0>'+name+'</arg0> </q0:sayHello></soapenv:Body></soapenv:Envelope>';

//打开连接
xhr.open('POST',wsUrl,true);

//重新设置请求头
xhr.setRequestHeader("Content-Type","text/xml;charset=UTF-8");

//设置回调函数
xhr.onreadystatechange = _back;

//发送请求
xhr.send(soap);
}

function _back(){
if(xhr.readyState == 4){
if(xhr.status == 200){
//alert('调用Webservice成功了');
var ret = xhr.responseXML;
var msg = ret.getElementsByTagName('return')[0];
document.getElementById('showInfo').innerHTML = msg.text;
//alert(msg.text);
}
}
}
</script>
</head>
<body>
<input type="button" value="发送SOAP请求" onclick="sendMsg();">
<input type="text" id="name">
<div id="showInfo">
</div>
</body>
</html>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: