The Calculator Web Service WSDL Document
Here is the WSDL document that I built over the course of this chapter:
<?xml version="1.0" encoding="utf-8"?> <definitions targetNamespace="http://somedomain/Calculator/wsdl" xmlns:tns="http://somedomain/Calculator/wsdl" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:s="http://somedomain/Calculator/schema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns="http://schemas.xmlsoap.org/wsdl/"> <types> <schema attributeFormDefault="qualified" elementFormDefault="qualified" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://somedomain/Calculator/schema"> <!-- Definitions for both the Add and Subtract SOAP messages --> <element name="Add"> <complexType> <all> <element name="x" type="int"/> <element name="y" type="int"/> </all> </complexType> </element> <element name="AddResult"> <complexType> <all> <element name="result" type="int"/> </all> </complexType> </element> <element name="Subtract"> <complexType> <all> <element name="x" type="int"/> <element name="y" type="int"/> </all> </complexType> </element> <element name="SubtractResult"> <complexType> <all> <element name="result" type="int"/> </all> </complexType> </element> <!-- Common SOAP fault detail element used by Add and Subtract --> <element name="CalculateFault"> <complexType> <all> <element name="x" type="int"/> <element name="y" type="int"/> <element name="Description" type="string"/> </all> </complexType> </element> <!-- Common result element for HTTP GET/POST binding --> <element name="Result" type="int"/> </schema> </types> <!-- Messages for SOAP-based Web service --> <message name="AddMsgIn"> <part name="parameters" element="s:Add"/> </message> <message name="AddMsgOut"> <part name="parameters" element="s:SubtractResult"/> </message> <message name="SubtractMsgIn"> <part name="parameters" element="s:Add"/> </message> <message name="SubtractMsgOut"> <part name="parameters" element="s:SubtractResult"/> </message> <message name="CalculateFaultMsg"> <part name="fault" element="s:CalculateFault"/> </message> <!-- Messages for HTTP GET/POST-based Web service --> <message name="AddHttpMsgIn"> <part name="x" type="xsd:string"/> <part name="y" type="xsd:string"/> </message> <message name="AddHttpMsgOut"> <part name="result" element="s:Result"/> </message> <message name="SubtractHttpMsgIn"> <part name="x" element="xsd:string"/> <part name="y" element="xsd:string"/> </message> <message name="SubtractHttpMsgOut"> <part name="result" element="s:Result"/> </message> <portType name="CalculatorPortType"> <operation name="Add"> <input message="tns:AddMsgIn"/> <output message="tns:AddMsgOut"/> <fault message="tns:CalculateFaultMsg" name="CalculateFault"/> </operation> <operation name="Subtract"> <input message="tns:SubtractMsgIn"/> <output message="tns:SubtractMsgOut"/> <fault message="tns:CalculateFaultMsg" name="CalculateFault"/> </operation> </portType> <!-- SOAP Binding --> <binding name="CalculatorBinding" type="tns:CalculatorPortType"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <operation name="Add"> <soap:operation soapAction="http://somedomain/Calculator/Add"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault> <soap:fault name="CalculateFault" use="literal"/> </fault> </operation> <operation name="Subtract"> <soap:operation soapAction="http://somedomain/Calculator/Subtract"/> <input> <soap:body use="literal"/> </input> <output> <soap:body use="literal"/> </output> <fault> <soap:fault name="CalculateFault" use="literal"/> </fault> </operation> </binding> <!-- HTTP GET Binding --> <binding name="CalculatorHttpGetBinding" type="tns:CalculatorPortType"> <http:binding verb="GET"/> <operation name="Add"> <http:operation location="/Add"/> <input> <http:urlEncoded/> </input> <output> <mime:mimeXml part="Body"/> </output> <fault> <mime:mimeXml part="Fault"/> </fault> </operation> <operation name="Subtract"> <http:operation location="/Subtract"/> <input> <http:urlEncoded/> </input> <output> <mime:mimeXml part="Body"/> </output> <fault> <mime:mimeXml part="Fault"/> </fault> </operation> </binding> <!-- HTTP POST Binding --> <binding name="CalculatorHttpPostBinding" type="tns:CalculatorPortType"> <http:binding verb="POST"/> <operation name="Add"> <http:operation location="/Add"/> <input> <mime:content type="application/x-www-form-urlencoded"/> </input> <output> <mime:mimeXml part="Body"/> </output> <fault> <soap:fault name="CalculateFault" use="literal"/> </fault> </operation> <operation name="Subtract"> <http:operation location="/Subtract"/> <input> <mime:content type="application/x-www-form-urlencoded"/> </input> <output> <mime:mimeXml part="Body"/> </output> <fault> <soap:fault name="CalculateFault" use="literal"/> </fault> </operation> </binding> <service name="CalculatorService"> <port name="CalculatorPort" binding="tns:CalculatorBinding"> <soap:address location="http://somedomain/Calculator"/> </port> <port name="CalculatorHttpGetPort" binding="tns:CalculatorHttpGetBinding"> <http:address location="http://somedomain/Calculator"/> </port> <port name="CalculatorHttpPostPort" binding="tns:CalculatorHttpPostBinding"> <http:address location="http://somedomain/Calculator"/> </port> </service> </definitions>