SOAP Body 元素

在 SOAP(Simple Object Access Protocol)消息中,Body 元素 是 SOAP 消息的 Envelope 的直接子元素之一,它是 必须存在 的元素,用于承载实际的业务数据(即 RPC 调用信息或文档风格的消息负载)。

SOAP 消息的基本结构(SOAP 1.1 和 1.2 都类似):

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Header>
    <!-- 可选的 Header 块 -->
  </soap:Header>
  <soap:Body>
    <!-- 必须存在的 Body 内容 -->
  </soap:Body>
</soap:Envelope>

在 SOAP 1.2 中命名空间略有不同:

<soap12:Envelope xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
  <soap12:Header>...</soap12:Header>
  <soap12:Body>...</soap12:Body>
</soap12:Envelope>

Body 元素的主要作用和常见内容

  1. RPC/编码风格(Section 5 encoding,通常被称为“SOAP RPC”)
    Body 中包含方法调用和参数:
<soap:Body>
  <m:GetStockPrice xmlns:m="https://example.com/stock">
    <m:StockName>IBM</m:StockName>
  </m:GetStockPrice>
</soap:Body>

响应示例:

<soap:Body>
  <m:GetStockPriceResponse xmlns:m="https://example.com/stock">
    <m:Price>83.8</m:Price>
  </m:GetStockPriceResponse>
</soap:Body>
  1. 文档/字面量风格(Document/Literal)
    Body 直接包含业务文档(通常是一个或多个符合 WSDL 中 message 定义的 XML 元素):
<soap:Body>
  <PurchaseOrder xmlns="https://example.com/po">
    <Item>PlayStation 5</Item>
    <Quantity>1</Quantity>
  </PurchaseOrder>
</soap:Body>
  1. SOAP Fault(错误信息)
    当发生错误时,Body 中会包含一个 <soap:Fault>(SOAP 1.1)或 <soap12:Fault>(SOAP 1.2)元素:

SOAP 1.1 示例:

<soap:Body>
  <soap:Fault>
    <faultcode>soap:Server</faultcode>
    <faultstring>服务器内部错误</faultstring>
    <detail>
      <app:Error xmlns:app="http://example.com/app">数据库连接失败</app:Error>
    </detail>
  </soap:Fault>
</soap:Body>

Body 元素的规则总结

项目要求
是否必须必须(Envelope 的子元素中唯一必须的)
出现次数只能出现一次
子元素任意业务元素或一个 Fault 元素
命名空间Body 本身不需要额外命名空间,但其子元素通常需要
是否可加密/签名可以(WS-Security 等规范常对 Body 进行签名或加密)

简单记法:SOAP Body 就是“真正要传递的有效载荷(payload)所在的地方”,无论是方法调用、业务文档,还是错误信息,都放在这里。Header 放的是元数据和路由、认证等附加信息,Body 放的是核心业务数据。

如果你需要具体的 SOAP Body 示例(比如某个 WSDL 生成的请求/响应),可以告诉我具体的操作名称或 WSDL,我可以帮你写出来。

文章已创建 2965

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

相关文章

开始在上面输入您的搜索词,然后按回车进行搜索。按ESC取消。

返回顶部