📜  WSDL-参考(1)

📅  最后修改于: 2023-12-03 14:48:35.220000             🧑  作者: Mango

WSDL-参考

WSDL(Web Services Description Language)是一种基于XML语言的Web服务描述语言,它定义了Web服务的形式、方法、地址、传输方式和编解码方式等信息。根据WSDL,客户端可以非常容易地了解Web服务的接口以及如何与之交互。

WSDL的组成部分

WSDL文档由多个部分组成,其中最重要的是接口和绑定。下面是一个典型的WSDL文档结构。

<definitions name="ServiceName"
             targetNamespace="http://example.com/namespace"
             xmlns="http://schemas.xmlsoap.org/wsdl/"
             xmlns:tns="http://example.com/namespace"
             xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
             xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <types>
    <xsd:schema targetNamespace="http://example.com/namespace">
      <!-- define data types -->
    </xsd:schema>
  </types>

  <message name="RequestMessage">
    <!-- define message structure -->
  </message>

  <message name="ResponseMessage">
    <!-- define message structure -->
  </message>

  <portType name="ServicePortType">
    <operation name="ServiceOperation">
      <input message="tns:RequestMessage"/>
      <output message="tns:ResponseMessage"/>
    </operation>
  </portType>

  <binding name="ServiceBinding" type="tns:ServicePortType">
    <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

    <operation name="ServiceOperation">
      <soap:operation soapAction="http://example.com/namespace/ServiceOperation"/>
      <input>
        <soap:body use="literal"/>
      </input>
      <output>
        <soap:body use="literal"/>
      </output>
    </operation>
  </binding>

  <service name="ServiceName">
    <port name="ServicePort" binding="tns:ServiceBinding">
      <soap:address location="http://example.com/endpoint"/>
    </port>
  </service>
</definitions>
  1. name:定义服务的名称。
  2. targetNamespace:定义服务的命名空间。
  3. xmlns:WSDL文档的默认命名空间。
  4. xmlns:tns:定义自定义命名空间。
  5. xmlns:soap:WSDL的SOAP扩展命名空间。
  6. xmlns:xsd:WSDL的XML Schema命名空间。
  7. types:定义数据类型的XML Schema。
  8. message:定义消息结构,它定义在一个操作中发送或接收的消息的格式。
  9. portType:定义服务借口,它包含一个或多个操作。
  10. operation:定义借口中的操作。
  11. input:输入消息的定义。
  12. output:输出消息的定义。
  13. binding:绑定操作和传输协议。
  14. soap:binding:定义绑定的SOAP规范。
  15. soap:operation:SOAP操作的定义。
  16. soap:body:指示用于操作的SOAP消息体部分的内容类型。
  17. service:定义服务的端点,即定义如何访问服务。
  18. port:一个端口定义了一个特定地址上的一组关联的抽象操作和一个绑定。
WSDL的使用

WSDL使得客户端可以简单地了解Web服务的接口以及如何与之交互。客户端使用WSDL文档来创建SOAP消息,这些消息使用HTTP协议通过Internet传输到远程服务器并提供给Web服务执行。

以下是一个使用WSDL文件调用Web服务的示例代码:

import zeep

# load the wsdl
client = zeep.Client(wsdl='http://example.com/namespace?wsdl')

# call the web service operation
result = client.service.ServiceOperation(argument1, argument2)

# handle the response
print(result)
总结

WSDL文件是Web服务的重要组成部分,用于定义Web服务的接口和操作。客户端可以使用WSDL文件来了解Web服务的接口以及如何使用它来交互。 WSDL文件可以让客户端自动生成Web服务的SOAP消息,并使用HTTP协议通过Internet将消息传输到Web服务端。