要調(diào)用的Web服務(wù)是求兩個整數(shù)和,并返回結(jié)果。
服務(wù)的WSDL文件內(nèi)容如下:
<?xml version="1.0" encoding="utf-8" ?>
<wsdl:definitions
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tns="http://tempuri.org/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
targetNamespace="http://tempuri.org/"
xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/">
<wsdl:types>
<s:schema elementFormDefault="qualified"
targetNamespace="http://tempuri.org/">
<s:element name="AddTwoIntegers">
<s:complexType>
<s:sequence>
<s:elementminOccurs="1" maxOccurs="1" name="IntegerOne" type="s:int" />
<s:elementminOccurs="1" maxOccurs="1" name="IntegerTwo" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
<s:element name="AddTwoIntegersResponse">
<s:complexType>
<s:sequence>
<s:elementminOccurs="1" maxOccurs="1" name="AddTwoIntegersResult" type="s:int" />
</s:sequence>
</s:complexType>
</s:element>
</s:schema>
</wsdl:types>
<wsdl:message name="AddTwoIntegersSoapIn">
<wsdl:part name="parameters" element="tns:AddTwoIntegers" />
</wsdl:message>
<wsdl:message name="AddTwoIntegersSoapOut">
<wsdl:part name="parameters" element="tns:AddTwoIntegersResponse" />
</wsdl:message>
<wsdl:portType name="SimpleServiceSoap">
<wsdl:operation name="AddTwoIntegers">
<wsdl:input message="tns:AddTwoIntegersSoapIn" />
<wsdl:output message="tns:AddTwoIntegersSoapOut" />
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="SimpleServiceSoap" type="tns:SimpleServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document" />
<wsdl:operation name="AddTwoIntegers">
<soap:operation soapAction="http://tempuri.org/AddTwoIntegers" style="document" />
<wsdl:input>
<soap:body use="literal" />
</wsdl:input>
<wsdl:output>
<soap:body use="literal" />
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="SimpleService">
<documentation xmlns="http://schemas.xmlsoap.org/wsdl/" />
<wsdl:port name="SimpleServiceSoap" binding="tns:SimpleServiceSoap">
<soap:address location="http://localhost/Develop.NET/Home.Develop.WebServices/SimpleService.asmx"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
javaScript代碼中利用了MS的HTTP代理對象XMLHTTP,在Mozilla's Web brower中相應(yīng)的組件是XMLHttpRequest,他們都提供了類似的方法來完成soap請求。下面的代碼用的是IE中的XMLHTTP對象。代碼假定調(diào)用過程中沒有Fault。
function fncAddTwoIntegers(a, b)
{
var oXmlHttp = new ActiveXObject("MSXML2.XMLHTTP");
oXmlHttp.open("POST", "http://localhost/Develop.NET/Home.Develop.WebServices/SimpleService.asmx'", false);
oXmlHttp.setRequestHeader("Content-Type", "text/xml");
oXmlHttp.setRequestHeader("SOAPAction", "http://tempuri.org/AddTwoIntegers");
oXmlHttp.send("
<soap:Envelopexmlns: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:Body>
<AddTwoIntegersxmlns='http://tempuri.org/'>
<IntegerOne>" + a + "</IntegerOne>
<IntegerTwo>" + b + "</IntegerTwo>
</AddTwoIntegers>
</soap:Body>
</soap:Envelope>");
return oXmlHttp.responseXML.selectSingleNode("http://AddTwoIntegersResult").text;
}
原文英文出自:
http://builder.com.com/5100-6371_14-5887775.html?tag=nl.e601