你可以仔细考察下面的代码:
function btn_click (n1, n2)
{
var xmlObj = new ActiveXObject("Msxml2.DOMDocument") ;
var sXml = "" ;
sXml += "" ;
sXml += "" ;
sXml += "" ;
sXml = sXml + "" + n1.value + "" ;
sXml = sXml + "" + n2.value + "" ;
sXml += ""
xmlObj.loadXML(sXml) ;
// 完成请求的准备,手工生成一个SOAP的格式包(消息主体)
XmlRequest.innerText = xmlObj.xml ;
// 发出请求 并且得到服务器的回应。
var xmlHTTP = new ActiveXObject("Msxml2.XMLHTTP") ;
xmlHTTP.Open ( "Post", "http://localhost/WebService1/Service1.asmx", false) ;
xmlHTTP.setRequestHeader("SOAPAction", "http://tempuri.org/Add") ;
xmlHTTP.setRequestHeader("Content-Type", "text/xml; charset=utf-8" ) ;
xmlHTTP.Send(xmlObj.xml) ;
MyResult.innerText = xmlHTTP.responseText ;
var xmlResponse = xmlHTTP.responseXML ;
// xmlHTTP.responseXML 中就是服务器回应的结果
answer.innerText = xmlResponse.selectSingleNode
("soap:Envelope/soap:Body/AddResponse/AddResult").text ;
看得出先构造一个SOAP的包然后把请求拿回来(selectSingleNode函数是XML
DOM中的很通用的一个函数)具体的结果可以看09CallServiceXML.jpg
好了,通过上面我们完成了一个Web Service。这是完成一个Web Service的基本框架,剩下的你可以进行扩充实现你需要的功能。在最后我们具体考察了Web Service的协议和客户端的问题,涉及到SOAP和XML的一些概念。尽管VS。NET实现Web Service很方便,但手工实现也是完全可以的,但愿看完这篇文章之后你可以对VS。NET说一次不。
|