📅  最后修改于: 2023-12-03 15:35:45.228000             🧑  作者: Mango
WSDL (Web Services Description Language) 是一种描述 Web 服务的 XML 语言。Web 服务是一种基于标准协议和标准格式的 SOA (面向服务的架构) 应用程序组件。
WSDL 用于描述 Web 服务的接口、协议和格式。它定义了 Web 服务的输入参数和输出参数,以及支持的消息格式和通信协议。
使用 WSDL,可以:
WSDL 文档包括以下几个部分:
下面是一个简单的 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,可以通过以下步骤来使用 Web 服务:
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 服务就像调用本地方法一样简单。只需要按照 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 服务的客户端代码,提高开发效率。