Web services are web based applications that use open, XML-based standards and transport protocol designed to support interoperable
machine-to-machine interaction over a network.
Explain SOAP version 1.2
The Simple Object Access Protocol (SOAP), is a protocol specification for exchanging structured information in the implementation of web services.
More information about the SOAP specification, see http://www.w3.org/TR/soap/
Information
Example SOAP 1.2 message
01 02 03 04 05 06 07 08 09 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38
|
<?xml version="1.0"?>
<soap:Envelope
xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
soap:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
xmlns:t="http://www.mobilefish.com/ws/timeouts"
<soap:Header>
<n:alertcontrol xmlns:n="http://www.mobilefish.com/ws/ac">
<n:priority>1</n:priority>
<n:expires>2001-06-22T14:00:00-05:00</n:expires>
</n:alertcontrol>
<m:transaction xmlns:m="http://www.mobilefish.com/ws/tx" soap:mustUnderstand="true">
46
</m:transaction>
</soap:Header>
<soap:Body>
<article xmlns="http://www.mobilefish.com/ws/catalogue">
<name>Soapbox</name>
<url>http://www.mobilefish.com/demo</url>
</article>
<soap:Fault>
<soap:Code>
<soap:Value>soap:Sender</soap:Value>
<soap:Subcode>
<soap:Value>t:MessageTimeout</soap:Value>
</soap:Subcode>
</soap:Code>
<soap:Reason>
<soap:Text xml:lang="en">Sender Timeout</soap:Text>
</soap:Reason>
<soap:Detail>
<t:MaxTime>P5M</t:MaxTime>
</soap:Detail>
</soap:Fault>
</soap:Body>
</soap:Envelope>
|
02 |
The Envelope (mandatory) is the root element of the SOAP message.
|
03 |
The xmlns:soap namespace should always have the value of: "http://www.w3.org/2003/05/soap-envelope/,
and defines the Envelope as a SOAP Envelope.
If a different or no namespace is used, the application generates an error and discards the SOAP message.
Note:
The choice of any namespace prefix "xmlns:soap" is arbitrary and not semantically significant.
|
04 |
The Envelope element may have the following attribute and defines how a recipient should process the SOAP message.
- encodingStyle (See Header element for explanantion)
|
07 |
The Header element (optional) is encoded as the first immediate child element of the Envelope element and
contains application specific information (like authentication, payment, etc) about the SOAP message.
The Header element may have the following attributes:
- encodingStyle
The encodingStyle attribute defines the data types in the SOAP message which can be used to serialize or deserialize
the SOAP message. A SOAP message has no default encoding.
- role
Is used to indicate the SOAP node to which a particular SOAP header block is targeted
- mustUnderstand
Is used to indicate whether the processing of a SOAP header block is mandatory or optional
and has the value of "false" or "0", "true" or "1".
If this attribute is omitted, mustUnderstand is considered "false".
- relay
Is used to indicate whether a SOAP header block targeted at a SOAP receiver must be relayed if not processed
and has the value of "false" or "0", "true" or "1".
If this attribute is omitted, relay is considered "false".
|
08 |
All immediate child elements of the Header element must be namespace qualified, for example:
xmlns:n="http://www.mobilefish.com/ws/ac"
xmlns:t="http://www.mobilefish.com/ws/tx"
|
17 |
The Body element (mandatory) contains information intended for the ultimate recipient of the message.
Immediate child elements of the SOAP Body element should be namespace-qualified.
|
22 |
The Fault element (optional) is used to carry error information within a SOAP message.
If present, the SOAP Fault element MUST appear as a body entry and MUST NOT appear more than once within a Body element.
The Fault element has two or more child elements in order as follows:
- Code (mandatory)
The Code element contains two elements:
- Value (mandatory)
SOAP defines a small set of SOAP fault codes covering high level SOAP faults:
- VersionMismatch
Found an invalid namespace for the SOAP Envelope element.
- MustUnderstand
An immediate child element of the Header element, with the mustUnderstand attribute set to "1", was not understood.
- DataEncodingUnknown
A SOAP header block or SOAP body child element information item targeted at the faulting SOAP node is scoped
with a data encoding that the faulting node does not support.
- Sender
The message was incorrectly formed or did not contain the appropriate information in order to succeed.
For example, the message could lack the proper authentication or payment information.
It is generally an indication that the message is not to be resent without change.
- Receiver
The message could not be processed for reasons attributable to the processing of the message rather than to
the contents of the message itself. For example, processing could include communicating with an upstream SOAP node,
which did not respond. The message could succeed if resent at a later point in time.
- Subcode (optional)
The Subcode element contains two elements:
- Value (mandatory)
The value of this element is an application defined subcategory of the value of the
Value child element information item of the Subcode element information item's parent element information item.
- Subcode (optional)
- Reason (mandatory)
Is intended to provide a human-readable explanation of the fault.
- Node (optional)
The Node element information item is intended to provide information about which
SOAP node on the SOAP message path caused the fault to happen.
- Role (optional)
The Role element information item identifies the role the node was operating in at the point the fault occurred.
The value of the Role element information item MUST be one of the roles assumed by the node during processing of the message.
- Detail (optional)
The Detail element information item is intended for carrying application specific error information.
|
|
|