SOAP 消息的结构

SOAP 消息编码为 XML 文档,由以下内容组成:<Envelope>元素,其中包含可选<Header>元素和必需的<Body>元素。 <Fault>元素,包含在<Body>,则用于报告错误。

SOAP 包络
<Envelope>是每个 SOAP 消息中的根元素,并且包含两个子元素 (可选)<Header>元素和必需的<Body>元素。
SOAP 头
<Header>是 SOAP 包络的可选子元素,用于传递与应用程序相关的信息,这些信息将由 SOAP 节点沿消息路径进行处理; 请参阅 SOAP 头
SOAP 主体
<Body>是 SOAP 包络的必需子元素,其中包含旨在用于消息最终接收方的信息; 请参阅 SOAP 主体
SOAP 故障
<Fault>是 SOAP 主体的子元素,此子元素用于报告错误; 请参阅 SOAP 故障

XML 元素<Header><Body>是由使用它们的应用程序定义的,尽管 SOAP 规范对它们的结构施加了一些约束。 下图显示了 SOAP 消息的结构。

此图将 SOAP 包络同时显示为 SOAP 头和 SOAP 主体的容器。

以下代码是包含头块的 SOAP 消息的示例:<m:reservation><n:passenger>元素) 和主体 (包含<p:itinterary>元素)。

<?xml version='1.0' Encoding='UTF-8' ?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope"> 
 <env:Header>
  <m:reservation xmlns:m="http://travelcompany.example.org/reservation" 
		env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
   <m:reference>uuid:093a2da1-q345-739r-ba5d-pqff98fe8j7d</m:reference>
   <m:dateAndTime>2007-11-29T13:20:00.000-05:00</m:dateAndTime>
  </m:reservation>
  <n:passenger xmlns:n="http://mycompany.example.com/employees" 
		env:role="http://www.w3.org/2003/05/soap-envelope/role/next">
   <n:name>Fred Bloggs</n:name>
  </n:passenger>
 </env:Header>
 <env:Body>
  <p:itinerary xmlns:p="http://travelcompany.example.org/reservation/travel">
   <p:departure>
     <p:departing>New York</p:departing>
     <p:arriving>Los Angeles</p:arriving>
     <p:departureDate>2007-12-14</p:departureDate>
     <p:departureTime>late afternoon</p:departureTime>
     <p:seatPreference>aisle</p:seatPreference>
   </p:departure>
   <p:return>
     <p:departing>Los Angeles</p:departing>
     <p:arriving>New York</p:arriving>
     <p:departureDate>2007-12-20</p:departureDate>
     <p:departureTime>mid-morning</p:departureTime>
     <p:seatPreference></p:seatPreference>
   </p:return>
  </p:itinerary>
 </env:Body>
</env:Envelope>