第 6 章 使用 SOAP 1.1 消息


摘要

Apache CXF 提供了一个工具来生成 SOAP 1.1 绑定,该绑定不使用任何 SOAP 标头。但是,您可以使用任何文本或 XML 编辑器将 SOAP 标头添加到绑定中。

6.1. 添加 SOAP 1.1 绑定

使用 wsdl2soap

要使用 wsdl2soap 命令生成 SOAP 1.1 绑定:ws dl2soap-iport-type-name-bbinding-name-doutput-directory-ooutput-file-nsoap-body-namespace-style (document/rpc)-use (literal/encoded)-v-verbose-quietwsdlurl

注意

要使用 wsdl2soap,您需要下载 Apache CXF 分发。

该命令有以下选项:

选项解释

-i port-type-name

指定生成绑定的 portType 元素。

wsdlurl

包含 portType 元素定义的 WSDL 文件的路径和名称。

该工具具有以下可选参数:

选项解释

-b binding-name

指定生成的 SOAP 绑定的名称。

-d output-directory

指定要放置所生成的 WSDL 文件的目录。

-o output-file

指定生成的 WSDL 文件的名称。

-n soap-body-namespace

当样式为 RPC 时,指定 SOAP 正文命名空间。

-style (document/rpc)

指定 SOAP 绑定中使用的编码风格(文档或 RPC)。默认为 document。

-use (literal/encoded)

指定 SOAP 绑定中使用的绑定使用(编码或文字)。默认值为字面值。

-v

显示工具的版本号。

-verbose

在代码生成过程中显示注释。

-quiet

在代码生成过程中阻止注释。

需要 -i port-type-namewsdlurl 参数。如果指定了 -style rpc 参数,则需要 -n soap-body-namspace 参数。所有其他参数都是可选的,可以按任何顺序列出。

重要

wsdl2soap 不支持生成 文档/编码的 SOAP 绑定。

示例

如果您的系统有一个处理订单的接口,并提供单一操作来处理在 WSDL 片段中定义的订单,类似于 例 6.1 “排序系统接口” 中显示的订单。

例 6.1. 排序系统接口

<?xml version="1.0" encoding="UTF-8"?>
<definitions name="widgetOrderForm.wsdl"
    targetNamespace="http://widgetVendor.com/widgetOrderForm"
    xmlns="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
    xmlns:tns="http://widgetVendor.com/widgetOrderForm"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:xsd1="http://widgetVendor.com/types/widgetTypes"
    xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">

<message name="widgetOrder">
  <part name="numOrdered" type="xsd:int"/>
</message>
<message name="widgetOrderBill">
  <part name="price" type="xsd:float"/>
</message>
<message name="badSize">
  <part name="numInventory" type="xsd:int"/>
</message>

<portType name="orderWidgets">
  <operation name="placeWidgetOrder">
    <input message="tns:widgetOrder" name="order"/>
    <output message="tns:widgetOrderBill" name="bill"/>
    <fault message="tns:badSize" name="sizeFault"/>
  </operation>
</portType>
...
</definitions>

orderWidget 生成的 SOAP 绑定显示在 例 6.2 “orderWidgets的 SOAP 1.1 绑定” 中。

例 6.2. orderWidgets的 SOAP 1.1 绑定

<binding name="orderWidgetsBinding" type="tns:orderWidgets">
  <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="placeWidgetOrder">
      <soap:operation soapAction="" style="document"/>
      <input name="order">
        <soap:body use="literal"/>
      </input>
      <output name="bill">
        <soap:body use="literal"/>
      </output>
      <fault name="sizeFault">
        <soap:body use="literal"/>
      </fault>
  </operation>
</binding>

此绑定指定消息使用 document/literal 消息样式发送。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.