📜  SOAP-消息结构(1)

📅  最后修改于: 2023-12-03 15:20:10.571000             🧑  作者: Mango

SOAP 消息结构

概述

SOAP (Simple Object Access Protocol) 是一种网络协议,它使用 XML 格式来编码请求和响应消息。在 SOAP 中,一个请求和响应被封装在一个 SOAP 消息中,并使用 HTTP 或 HTTPS 协议进行传输。

SOAP 消息结构被定义为一个 XML 文档,其中包含了以下几个必需的元素:

  • Envelope:SOAP 消息的根元素,它包含了所有其他元素。
  • Header:可选的 SOAP 头,用于包含与消息传递相关的元数据。
  • Body:SOAP 消息主体,包含了请求和响应信息。
SOAP 消息示例

下面是一个包含请求和响应的 SOAP 消息示例:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
  </soap:Header>
  <soap:Body>
    <GetStockPriceResponse xmlns="http://www.example.com/stock">
      <Price>34.5</Price>
    </GetStockPriceResponse>
  </soap:Body>
</soap:Envelope>

在这个示例中,Envelope 元素是 SOAP 消息的根元素,它包含了一个 Header 元素和一个 Body 元素。Header 元素是空的,因为这个示例不包括任何与消息传递相关的元数据。Body 元素包含了一个 GetStockPriceResponse 元素,它包括了查询股票价格的响应信息。

Envelope 元素

SOAP 消息的根元素是 Envelope 元素,它包含了所有其他元素。Envelope 元素包含了以下两个可选的属性:

  • xmlns:soap:用于指定 SOAP 命名空间的 URI。
  • xmlns:xsi、xmlns:xsd:用于指定 XML Schema 命名空间的 URI。

Envelope 元素包含了以下两个必需的子元素:

  • Header:用于包含 SOAP 头的可选元素。在大多数情况下,我们不需要使用 Header 元素。
  • Body:用于包含 SOAP 消息主体的必需元素。
Header 元素

Header 元素是可选的 SOAP 头,用于包含与消息传递相关的元数据。在消息中,Header 元素放置在 Envelope 元素之下,同时也在 Body 元素之上。Header 元素包含了一系列的子元素,用于传递元数据,如身份验证信息、消息的路由信息等等。

以下是一个包含 Header 元素的 SOAP 消息示例:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
    <authentication xmlns="http://www.example.com/auth">
      <username>testuser</username>
      <password>testpass</password>
    </authentication>
  </soap:Header>
  <soap:Body>
    <GetStockPriceRequest xmlns="http://www.example.com/stock">
      <Symbol>IBM</Symbol>
    </GetStockPriceRequest>
  </soap:Body>
</soap:Envelope>

在这个示例中,我们在 Header 元素里包含了一个 authentication 元素,它包括了用户名和密码等身份验证信息。

Body 元素

Body 元素是必需的 SOAP 消息主体,它包含了请求和响应信息。Body 元素包含了一系列的子元素,这些子元素用于描述请求或响应的数据,例如查询股票价格信息等等。

以下是一个包含 Body 元素的 SOAP 消息示例:

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope/"
  xmlns:xsd="http://www.w3.org/2001/XMLSchema"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soap:Header>
  </soap:Header>
  <soap:Body>
    <GetStockPriceRequest xmlns="http://www.example.com/stock">
      <Symbol>IBM</Symbol>
    </GetStockPriceRequest>
  </soap:Body>
</soap:Envelope>

在这个示例中,我们在 Body 元素里包含了一个 GetStockPriceRequest 元素,它包括了查询股票价格的请求信息。

结论

SOAP 消息结构使用 XML 格式来编码请求和响应消息。SOAP 消息结构被定义为一个 XML 文档,其中包含了根元素 Envelope,可选的元素 Header 和必需的元素 Body。在 XML 文档中,SOAP 消息结构使用不同的命名空间来定义不同的元素和属性。