WSDL(Travelport Air)

WSDL 是基于 XML 的用于描述 Web Services 以及如何访问 Web Services 的语言。

什么是 WSDL?

  • WSDL 指网络服务描述语言
  • WSDL 使用 XML 编写
  • WSDL 是一种 XML 文档
  • WSDL 用于描述网络服务
  • WSDL 也可用于定位网络服务
  • WSDL 还不是 W3C 标准

WSDL文档结构

  • <import>

import元素使得可以在当前的WSDL文档中使用其他WSDL文档中指定的命名空间中的定义元素。

  • <service>

元素包含一个或者多个port元素,其中每个port元素表示一个不同的Web服务。

  • <port>

定义为绑定和网络地址组合的单个端点。

  • <portType>

最重要的 WSDL 元素。它可描述一个 web service、可被执行的操作,以及相关的消息。可以把 <portType> 元素比作传统编程语言中的一个函数库(或一个模块、或一个类)。

  • <message>

通信数据的抽象类型化定义,它由一个或者多个 part 组成。

  • <types>

web service 数据类型定义的容器,它使用某种类型系统(如 XSD)

  • <binding>

web service 使用的通信协议,将一个抽象portType映射到一组具体协议(SOAO和HTTP)、消息传递样式、编码样式。

  • <part>

消息参数,指定引用types中定义的标签片段

  • <partType>

特定端口类型的具体协议和数据格式规范,它由一个或者多个 Operation组成。

  • <Operation>

对服务所支持的操作进行抽象描述。

  • Soap

soap是一种传输协议,该协议使用的就是http协议。只不过HTTP传输的内容是HTML文本,而SOAP协议传输的是SOAP的数据。

  • <Soap:binding>

指出绑定是针对soap协议格式的。Transport指定了传输协议。Style指定通信风格。有“rpc”和“document”两种风格。

  • <Soap:operation>

为SOAP服务操作提供消息。通常可以指明此操作的soapActionHTTP头。

  • <soap:header>

指出消息如何在soap header元素中表现

  • <Soap:body>

指出消息如何在soap body元素中表现。

Low Fare Search Req

Air.wsdl:

       <binding name="AirLowFareSearchBinding"
             type="tns:AirLowFareSearchPortType">
        <soap:binding style="document"
                      transport="http://schemas.xmlsoap.org/soap/http" />
        <operation name="service">
            <soap:operation soapAction="http://localhost:8080/kestrel/AirService"/>
                <input>
                    <soap:header use="literal" part="sessionContext" message="tns:SessionContext"/>
                    <soap:body use="literal" />
                </input>
                <output>
                    <soap:body use="literal" />
                </output>
                <fault name="ErrorInfoMsg">
                    <soap:fault name="ErrorInfoMsg" use="literal" />
                </fault>
        </operation>
      </binding>

      <port name="AirLowFareSearchPort"
              binding="tns:AirLowFareSearchBinding">
            <soap:address
                    location="http://localhost:8080/kestrel/AirService" />
      </port>

如上代码,<binding name="AirLowFareSearchBinding" type="tns:AirLowFareSearchPortType">是将name为AirLowFareSearchPortType的portType映射过来。
<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http" />通信风格为document,传输协议为”http://schemas.xmlsoap.org/soap/http“。
<operation>…</operation>创建soap协议,定义协议内容。

AirAbstract.wsdl:

    <message name="AirLowFareSearchReq">
        <part name="parameters" element="ns1:LowFareSearchReq" />
    </message>
    <message name="AirLowFareSearchRsp">
        <part name="result" element="ns1:LowFareSearchRsp" />
    </message>
    <message name="AirFaultMessage">
        <part name="fault" element="common:ErrorInfo" />
    </message>
    <portType name="AirLowFareSearchPortType">
        <operation name="service">
            <input message="tns:AirLowFareSearchReq" />
            <output message="tns:AirLowFareSearchRsp" />
            <fault name="ErrorInfoMsg" message="tns:AirFaultMessage" />
        </operation>
    </portType>

如上代码,定义一个端口为:AirLowFareSearchPortType,在该端口中定义了一个操作”service”,操作 “service” 拥有一个名为 “tns:AirLowFareSearchReq” 的输入消息,一个名为 “tns:AirLowFareSearchRsp” 的输出消息,以及一个名为”ErrorInfoMsg”的失败返回消息,其中message属性则是调用上面<message>,<message>下的<part>中的element则是调用对应xsd中的属性。注:若通信风格为rpc,则element需改为type。

    原文作者:Kuco_Shen
    原文地址: https://www.jianshu.com/p/530c1d55c416
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞