📜  wsdl (1)

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

WSDL:Web Services Description Language

WSDL (Web Services Description Language) 是一种描述 Web 服务的 XML 语言。Web 服务是一种基于标准协议和标准格式的 SOA (面向服务的架构) 应用程序组件。

WSDL 的作用

WSDL 用于描述 Web 服务的接口、协议和格式。它定义了 Web 服务的输入参数和输出参数,以及支持的消息格式和通信协议。

使用 WSDL,可以:

  • 发布 Web 服务的接口文档。
  • 定义客户端如何调用 Web 服务。
  • 生成 Web 服务的客户端代码。
WSDL 的结构

WSDL 文档包括以下几个部分:

  • 定义 Web 服务的接口。用 portType 元素表示。
  • 定义 Web 服务支持的消息格式。用 message 元素表示。
  • 定义 Web 服务的通信协议。用 binding 元素表示。
  • 指定 Web 服务的访问地址。用 service 元素表示。

下面是一个简单的 WSDL 的例子:

<definitions name="HelloService"
             targetNamespace="http://example.com/hello"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <message name="sayHelloRequest">
    <part name="name" type="xsd:string"/>
  </message>

  <message name="sayHelloResponse">
    <part name="greeting" type="xsd:string"/>
  </message>

  <portType name="HelloPortType">
    <operation name="sayHello">
      <input message="tns:sayHelloRequest"/>
      <output message="tns:sayHelloResponse"/>
    </operation>
  </portType>

  <binding name="HelloBinding" type="tns:HelloPortType">
    <soap:binding style="rpc"
                  transport="http://schemas.xmlsoap.org/soap/http"/>
    <operation name="sayHello">
      <soap:operation soapAction="sayHello"/>
      <input>
        <soap:body use="encoded"
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                   namespace="urn:examples:helloservice"
                   namespace="http://example.com/hello"/>
      </input>
      <output>
        <soap:body use="encoded"
                   encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"
                   namespace="urn:examples:helloservice"
                   namespace="http://example.com/hello"/>
      </output>
    </operation>
  </binding>

  <service name="HelloService">
    <port name="HelloPort" binding="tns:HelloBinding">
      <soap:address location="http://example.com/hello"/>
    </port>
  </service>

</definitions>
WSDL 的使用

使用 WSDL,可以通过以下步骤来使用 Web 服务:

  1. 下载 WSDL 文档。
  2. 生成 Web 服务的客户端代码。
  3. 使用客户端代码调用 Web 服务。
下载 WSDL 文档

WSDL 文档一般由 Web 服务提供方发布在 Web 上。通常,WSDL 文档的 URL 地址比 Web 服务的 URL 地址多了一个"?wsdl"后缀。

比如,一个 Web 服务的 URL 地址是:

http://example.com/hello

那么,对应的 WSDL 文档的 URL 地址就是:

http://example.com/hello?wsdl

可以使用浏览器或命令行工具(如 cURL)下载 WSDL 文档。

生成客户端代码

使用 WSDL,可以生成用于调用 Web 服务的客户端代码。根据不同的编程语言和工具,生成客户端代码的方法也不同。

一些生成客户端代码工具:

调用 Web 服务

使用生成的客户端代码,调用 Web 服务就像调用本地方法一样简单。只需要按照 WSDL 文档定义的接口、参数和格式来调用即可。

下面是一个简单的 Java 调用 Web 服务的例子:

HelloService service = new HelloService();
HelloPortType port = service.getHelloPort();

String name = "World";
String greeting = port.sayHello(name);

System.out.println(greeting);
总结

WSDL 是一种用于描述 Web 服务的 XML 语言。它定义了 Web 服务的接口、协议和格式,使得 Web 服务的调用变得简单和标准化。使用 WSDL,可以快速生成 Web 服务的客户端代码,提高开发效率。