这篇文章主要介绍了 js 调用 webservice 构造 SOAP 进行身份验证的相关资料, 需要的朋友可以参考下
Javascript 是一种由 Netscape 的 LiveScript 发展而来的原型化继承的基于对象的动态类型的区分大小写的客户端脚本语言,主要目的是为了解决服务器端语言,比如 Perl,遗留的速度问题,为客户提供更流畅的浏览效果。
- <html>
- <head>
- <title>无标题页</title>
- <script language="javascript" type="text/javascript">
- // <!CDATA[
- //define
- var xmlhttp;
- var value=new Array();
- var variable=new Array();
- //Show Response MSG.
- function handleStateChange()
- {
- var h=document.getElementById("Label1");
- if(xmlhttp.readyState==4)
- {
- if(xmlhttp.status==200)
- {
- alert(xmlhttp.responseText);
- h.innerHTML=xmlhttp.responseText;
- //h.innerHTML=xmlhttp.responseXML;
- }
- else if(xmlhttp.status==404)
- {
- h.innerHTML="<br>找不到请求的服务器资源!";
- }
- }
- else if(xmlhttp.readyState==0)
- {
- h.innerHTML="<br>未初始化!";
- }
- else if(xmlhttp.readyState==1)
- {
- h.innerHTML="<br>正在加载……!";
- }
- else if(xmlhttp.readyState==2)
- {
- h.innerHTML="<br>已经加载完成!";
- }
- else if(xmlhttp.readyState==3)
- {
- h.innerHTML="<br>正在和服务器交互";
- }
- else
- {
- h.innerHTML=xmlhttp.responseXML;
- }
- }
- //Get Request Data's length
- function getlen(str)
- {
- var bytesCount=0;
- for (var i = 0; i < str.length; i++)
- {
- var c = str.charAt(i);
- if (/^[u0000-u00ff]$/.test(c)) //匹配双字节
- {
- bytesCount += 1;
- }
- else
- {
- bytesCount += 2;
- }
- }
- return bytesCount;
- }
- //Create XMLHttpRequest Object
- function createXMLHttpRequest()
- {
- if(window.ActiveXObject)
- {
- xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
- }
- else if(window.XMLHttpRequst)
- {
- xmlhttp=new XMLHttpRequest();
- }
- }
- //send Request By HTTP POST
- //实际上这段代码就是用JS构造一个字符串,而这个字符串就是通过浏览器查看WEBSERVICE时方法时出现的那段
- function RequestByPost(method,variable,value,url,_Namespace)
- {
- createXMLHttpRequest();
- var data;
- data = '<?xml version="1.0" encoding="utf-8"?>';
- data = data + '<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">';
- //加了这段可以实现soap头
- //UserName ,Pwd这是我的SOAP验证形式,需替换
- data = data + "<soap:Header>"
- data = data + '<UserSoapHeader xmlns="http://tempuri.org/">'
- data = data + "<UserName>admin</UserName>"
- data = data + "<Pwd>faaaa</Pwd>"
- data = data + "</UserSoapHeader>"
- data = data + "</soap:Header>"
- data = data + '<soap:Body>';
- data = data + '<'+method+' xmlns="'+_Namespace+'">';
- for(var i=0;i<variable.length;i++)
- {
- data = data + '<'+variable[i]+'>'+value[i]+'</'+variable[i]+'>';
- }
- data = data + '</'+method+'>';
- data = data + '</soap:Body>';
- data = data + '</soap:Envelope>';
- xmlhttp.onreadystatechange=handleStateChange;
- xmlhttp.Open("POST",url, true);
- xmlhttp.SetRequestHeader ("Content-Type","text/xml; charset=utf-8");
- //xmlhttp.SetRequestHeader ("Content-Length",getlen(data));
- xmlhttp.SetRequestHeader ("SOAPAction",_Namespace+method);
- xmlhttp.Send(data);
- alert(data);
- }
- //WeatherReport Test:
- function Button2_onclick() {
- //方法名,参数名,参数值,服务URL,服务所使用命名空间
- RequestByPost("HelloWorld",[],[],"http://localhost:13267/SERVICES/WebService.asmx","http://tempuri.org/");
- }
- window.onload = function(){
- Button2_onclick();
- }
- // ]]>
- </script>
- </head>
- <body>
- <label id='Label1'>ss</label>
- </body>
- </html>
来源: http://www.phperz.com/article/17/0301/266125.html