ROUND 2 SOAP Interoperability Tests Specification: Group "B" Methods

 

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.

 

 

General Guidelines

 

 

 

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.

 

method: echoStructAsSimpleTypes

 

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>

 

method: echoSimpleTypesAsStruct

 

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>

 

method: echo2DStringArray

 

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>

 

method: echoNestedStruct

 

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>

method: echoNestedArray

 

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