This specification outlines a (proposed) SOAP service interface that can be implemented by SOAP implementations as part of an interoperability testing process. It introduces methods with more complex serialization requirements than those of the base "interop" interface.
The list of methods follows. Sample envelopes are provided as well. It is important to note that these envelope examples are ONLY examples, and there is no implication that the implementations need to conform to these specific envelopes.
This method accepts a single struct and echoes it back to the client decomposed into three output parameters.
An example of this structure is:
<ExampleStruct>
<varString>Hello</varString>
<varInt>8</varInt>
<varFloat>10.2</varFloat>
</ExampleStruct>
The structure is defined with the following schema:
<complexType name="SOAPStruct"> <complexContent> <all> <element name="varString" type="xsd:string"/> <element name="varInt" type="xsd:int"/> <element name="varFloat" type="xsd:float"/> </all> </complexContent> </complexType>
This type is defined within the namespace http://soapinterop.org/xsd
Input parameter name : inputStruct
Input parameter type: sb:SOAPStruct where xmlns:sb="http://soapinterop.org/xsd"
Output parameter name: outputString
Output parameter type: xsd:string
Output parameter name: outputInteger
Output parameter type: xsd:int
Output parameter name: outputFloat
Output parameter type: xsd:float
Request from client
POST /interop HTTP/1.0 Host: www.whitemesa.net User-Agent: White Mesa SOAP Interop Client/1.0 Content-Type: text/xml; charset="utf-8" Content-Length: 502 SOAPAction: "http://soapinterop.org/" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoStructAsSimpleTypes xmlns:m="http://soapinterop.org/"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </inputStruct> </m:echoStructAsSimpleTypes> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Response from server
HTTP/1.0 200 OK Date: Wed, 20 Jun 2001 02:44:16 GMT Server: WhiteMesa SOAP Server/2.3 Content-Type: text/xml; charset="utf-8" Content-Length: 508 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoStructAsSimpleTypesResponse xmlns:m="http://soapinterop.org/"> <outputString>hello world</outputString> <outputInteger>42</outputInteger> <outputFloat>0.005</outputFloat> </m:echoStructAsSimpleTypesResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
This method accepts three input parameters and echoes them back to the client incorporated into a single struct.
Input parameter name: inputString
Input parameter type: xsd:string
Input parameter name: inputInteger
Input parameter type: xsd:int
Input parameter name: inputFloat
Input parameter type: xsd:float
Output parameter name : return
Output parameter type: sb:SOAPStruct where xmlns:sb="http://soapinterop.org/xsd"
Request from client
POST /interop HTTP/1.0 Host: www.whitemesa.net User-Agent: White Mesa SOAP Interop Client/1.0 Content-Type: text/xml; charset="utf-8" Content-Length: 650 SOAPAction: "http://soapinterop.org/" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoSimpleTypesAsStruct xmlns:m="http://soapinterop.org/"> <inputString>hello world</inputString> <inputInteger>42</inputInteger> <inputFloat>0.005</inputFloat> </m:echoSimpleTypesAsStruct> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Response from server
HTTP/1.0 200 OK Date: Wed, 20 Jun 2001 02:44:31 GMT Server: WhiteMesa SOAP Server/2.3 Content-Type: text/xml; charset="utf-8" Content-Length: 646 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoSimpleTypesAsStructResponse xmlns:m="http://soapinterop.org/"> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> </return> </m:echoSimpleTypesAsStructResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
This method accepts an single 2 dimensional array of xsd:string and echoes it back to the client.
The array is defined with the following schema:
<complexType name="ArrayOfString2D"/> <complexContent> <restriction base="SOAP-ENC:Array"> <sequence> <element name="item" type="string" minOccurs="0" maxOccurs="unbounded" nillable="true"/> </sequence> <attributeGroup ref="SOAP-ENC:commonAttributes"/> <attribute ref="SOAP-ENC:offset"/> <attribute ref="SOAP-ENC:arrayType" wsdl:arrayType="xsd:string[,]"/> </restriction> </complexContent> </complexType>
Input parameter name : input2DStringArray
Input parameter type: sb:ArrayOfString2D where xmlns:sb="http://soapinterop.org/xsd"
Output parameter name: return
Output parameter type: sb:ArrayOfString2D where xmlns:sb="http://soapinterop.org/xsd"
Request from client
POST /interop HTTP/1.0 Host: www.whitemesa.net User-Agent: White Mesa SOAP Interop Client/1.0 Content-Type: text/xml; charset="utf-8" Content-Length: 497 SOAPAction: "http://soapinterop.org/" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echo2DStringArray xmlns:m="http://soapinterop.org/"> <input2DStringArray SOAP-ENC:arrayType="ns:string[2,3]" SOAP-ENC:offset="[0,0]" xmlns:ns="http://www.w3.org/2001/XMLSchema"> <item>row0col0</item> <item>row0col1</item> <item>row0col2</item> <item>row1col0</item> <item>row1col1</item> <item>row1col2</item> </input2DStringArray> </m:echo2DStringArray> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Response from server
HTTP/1.0 200 OK Date: Wed, 20 Jun 2001 02:44:37 GMT Server: WhiteMesa SOAP Server/2.3 Content-Type: text/xml; charset="utf-8" Content-Length: 501 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echo2DStringArrayResponse xmlns:m="http://soapinterop.org/"> <return SOAP-ENC:arrayType="ns:string[2,3]" SOAP-ENC:offset="[0,0]" xmlns:ns="http://www.w3.org/2001/XMLSchema"> <item>row0col0</item> <item>row0col1</item> <item>row0col2</item> <item>row1col0</item> <item>row1col1</item> <item>row1col2</item> </return> </m:echo2DStringArrayResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
This method accepts a single struct with a nested struct type member and echoes it back to the client.
An example of this structure is:
<ExampleStruct>
<varString>Hello</varString>
<varInt>8</varInt>
<varFloat>10.2</varFloat>
<varStruct> <varString>Goodbye</varString> <varFloat>99.007</varFloat> <varInt>42</varInt> </varStruct>
</ExampleStruct>
The structure is defined with the following schema:
<complexType name="SOAPStructStruct"> <complexContent> <all> <element name="varString" type="xsd:string"/> <element name="varInt" type="xsd:int"/> <element name="varFloat" type="xsd:float"/> <element name="varStruct" type="sb:SOAPStruct"/> </all> </complexContent> </complexType>
This type is defined within the namespace http://soapinterop.org/xsd
Input parameter name : inputStruct
Input parameter type: sb:SOAPStructStruct where xmlns:sb="http://soapinterop.org/xsd"
Output parameter name : return
Output parameter type: sb:SOAPStructStruct where xmlns:sb="http://soapinterop.org/xsd"
Request from client
POST /interop HTTP/1.0 Host: www.whitemesa.net User-Agent: White Mesa SOAP Interop Client/1.0 Content-Type: text/xml; charset="utf-8" Content-Length: 647 SOAPAction: "http://soapinterop.org/" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoNestedStruct xmlns:m="http://soapinterop.org/"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varStruct> <varString>nested struct</varString> <varInt>99</varInt> <varFloat>4.0699e-12</varFloat> </varStruct> </inputStruct> </m:echoNestedStruct> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Response from server
HTTP/1.0 200 OK Date: Wed, 20 Jun 2001 02:44:52 GMT Server: WhiteMesa SOAP Server/2.3 Content-Type: text/xml; charset="utf-8" Content-Length: 641 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoNestedStructResponse xmlns:m="http://soapinterop.org/"> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varStruct> <varString>nested struct</varString> <varInt>99</varInt> <varFloat>4.0699e-12</varFloat> </varStruct> </return> </m:echoNestedStructResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
This method accepts a single struct with a nested Array type member and echoes it back to the client.
An example of this structure is:
<ExampleStruct>
<varString>Hello</varString>
<varInt>8</varInt>
<varFloat>10.2</varFloat>
<varArray SOAP-ENC:arrayType="xsd:string[3]" SOAP-ENC:offset="[0]"> <item>red</item> <item>blue</item> <item>green</item> </varArray>
</ExampleStruct>
The structure is defined with the following schema:
<complexType name="SOAPArrayStruct"> <complexContent> <all> <element name="varString" type="xsd:string"/> <element name="varInt" type="xsd:int"/> <element name="varFloat" type="xsd:float"/> <element name="varArray" type="sb:Arrayofstring"/> </all> </complexContent> </complexType>
This type is defined within the namespace http://soapinterop.org/xsd
Input parameter name : inputStruct
Input parameter type: sb:SOAPArrayStruct where xmlns:sb="http://soapinterop.org/xsd"
Output parameter name : return
Output parameter type: sb:SOAPArrayStruct where xmlns:sb="http://soapinterop.org/xsd"
Request from client
POST /interop HTTP/1.0 Host: www.whitemesa.net User-Agent: White Mesa SOAP Interop Client/1.0 Content-Type: text/xml; charset="utf-8" Content-Length: 647 SOAPAction: "http://soapinterop.org/" <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoNestedArray xmlns:m="http://soapinterop.org/"> <inputStruct> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varArray SOAP-ENC:arrayType="xsd:string[3]" SOAP-ENC:offset="[0]"> <item>red</item> <item>blue</item> <item>green</item> </varArray> </inputStruct> </m:echoNestedArray> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Response from server
HTTP/1.0 200 OK Date: Wed, 20 Jun 2001 02:44:52 GMT Server: WhiteMesa SOAP Server/2.3 Content-Type: text/xml; charset="utf-8" Content-Length: 641 <?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <SOAP-ENV:Body> <m:echoNestedArrayResponse xmlns:m="http://soapinterop.org/"> <return> <varInt>42</varInt> <varFloat>0.005</varFloat> <varString>hello world</varString> <varArray SOAP-ENC:arrayType="xsd:string[3]" SOAP-ENC:offset="[0]"> <item>red</item> <item>blue</item> <item>green</item> </varArray> </return> </m:echoNestedArrayResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
Questions, comments to: cunnings@whitemesa.com
Changelog:
2001-10-7 Updated "ArrayOfString2D" schema in "echo2DStringArray" section. cunnings@whitemesa.com