使用 ?wsdl 查询 WSDL

您可以使用 ?wsdl 查询 Web Service。

Web 服务客户端可以向 IBM® App Connect Enterprise Web 服务发送一个带有 ?wsdl 查询字符串的 HTTP GET 请求,并接收用于配置该服务端点的输入节点的 WSDL 表示。 只能对使用 HTTP 而非 JMS 传输方法的输入节点执行此操作。 HTTP GET 请求的协议必须与流的协议匹配;因此如果流使用 SSL,那么 HTTP GET 请求必须以 https:// 开头。

客户机首先发送简单的 ?wsdl 查询,然后通过遵循引用的导入 (import) 或包含 (include) 链来完成 WSDL 定义。 例如,如果 Web Service 端点为 http://localhost:7800/test1,那么初始客户机请求为:

GET http://localhost:7800/test1?wsdl

此请求返回顶级 WSDL 服务定义,其中可能包含 WSDL 定义的其他段的导入。 例如,如果返回的 WSDL 具有以下行:

<wsdl:import ... location="http://localhost:7800/test1?wsdl=wsdl0"/>

那么客户机会发送对应请求以检索该 WSDL 段:

GET http://localhost:7800/test1?wsdl=wsdl0

一个或多个 WSDL 段也可具有 XML 模式数据的导入,例如:

<xsd:import ... schemaLocation="http://localhost:7800/test1?xsd=xsd0"/>

客户机再次发送对应请求来检索该数据:

GET http://localhost:7800/test1?xsd=xsd0
只能遵循语义正确的引用:
  • <wsdl:import> 元素是 wsdl:definition 元素的直接子代
  • <xsd:import><xsd:include> 元素是 xsd:schema 元素的直接子代
其中 wsdlhttp://schemas.xmlsoap.org/wsdl/ 的简写(名称空间前缀),xsdhttp://www.w3.org/2001/XMLSchema 的简写。 从表面看似为 <import><include> 的元素(例如,注释中的元素)对 URI 发出的请求会导致返回 SOAP Fault。 只有简单的 ?wsdl 查询字符串及与语义有效的导入和包含中所指定查询精确匹配的后续查询会导致返回数据。

返回的 WSDL 定义在逻辑上等同于 IBM App Connect Enterprise 工具包中的可部署 WSDL,其中内联模式已被外部化。 它在物理形式上可能与原始的已导入 WSDL 定义不同。 虽然使用特定 WSDL 绑定配置了 SOAPInput ,但返回的 WSDL 还包括流未使用的其他绑定 (如果这些绑定是导入的原始 WSDL 定义的一部分)。