WSDL简介及WSDL如何查看

**WSDL 指网络服务描述语言 (Web Services Description Language)。一个WSDL文档是一个服务的描述,它描述了:服务名,服务地址,服务能用什么协议访问,服务有哪些方法,每个方法有几部分参数,每个参数的类型。
在一个WSDL文档中,你最经常看到的元素前缀会有wsdl、soap、xsd。当然这些前缀是与命名空间URI对应的,前缀是可以自己定义的,或许与此不同,但大都这么定义。
WSDL在设计时,充分考虑了,各个元素模块的重用(好像一个类中定义了一些方法,可被不同方法共同调用)如:wsdl:binding、wsdl:portType、wsdl:message,你定义的这个元素可能被几个地方引用到。所以WSDL设计者把它设计的够精简、灵活。*强调内容*
下面我基于WSDL 1.2 语法分别对三个命名空间的经常用到的元素解释一下:最好从下往上看
//文档的根元素,表示这是一个服务的定义,在此定义中默认的名字空间URI为“http://axisversion.sample”.

"http://axisversion.sample" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/" xmlns:ns0="http://axisversion.sample/xsd" xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/" xmlns:ns1="http://org.apache.axis2/xsd" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" targetNamespace="http://axisversion.sample">

        This service is to get the running Axis version
    

//为它表示所有消息中能使用的基本元素类型,如一个方法三个参数的其中一个参数的类
了最大程度的平台中立性,WSDL 使用 XML Schema 语法来定义数据类型

    <xs:element name="ExceptionFault">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="Exception" nillable="true" type="xs:anyType"/>
      xs:sequence>
     xs:complexType>
    xs:element>
    <xs:element name="getVersionResponse">
     <xs:complexType>
      <xs:sequence>
       <xs:element name="return" nillable="true" type="xs:string"/>
      xs:sequence>
     xs:complexType>
    xs:element>
   xs:schema>
wsdl:types>

//这是定义一个消息,是一次服务调用的一个消息。也就是下面的方法可以用到(指定)

<wsdl:message name="getVersionMessage"/>
<wsdl:message name="getVersionResponse"/>

//这是这个消息的第一人部分,同方法的第一个参数

wsdl:message>
<wsdl:message name="getVersionFault">
   <wsdl:part name="part1" element="ns0:ExceptionFault"/>
wsdl:message>

*//端口类型,它表示被某种端口类型(访问协议)指定的一组可被这个端口执行的操作,以及相关消息,你可以它理解为可被调用的一个函数库

<wsdl:portType name="VersionPortType">

它表示其中一个操作

   <wsdl:operation name="getVersion"> 

//输入,用它指定一个输出

<wsdl:input xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" message="axis2:getVersionMessage" wsaw:Action="urn:getVersion"/>

//输出,用它指定一个返回消息

    <wsdl:output message="axis2:getVersionResponse"/>

//错误,用它指明发生错误时

<wsdl:fault message="axis2:getVersionFault" name="getVersionFault"/>
   wsdl:operation>
wsdl:portType>

细描述了某个端口,的消息传输协议和消息包装格式。(用于服务器端收到消息中的

"VersionSOAP11Binding" type="axis2:VersionPortType">
   "http://schemas.xmlsoap.org/soap/http" style="document"/>

处用于表示,当收到一个消息请求方法为“urn:getVersion”时,用此元素包含的描述定义来解析此消息。并确定消息所请求的方法所对应的服务的方法“wsdl:operation name=”getVersion”。

<wsdl:operation name="getVersion">
    <soap:operation soapAction="urn:getVersion" style="document"/>
    <wsdl:input>
     <soap:body use="literal"/>
    wsdl:input>
    <wsdl:output>
     <soap:body use="literal"/>
    wsdl:output>
    <wsdl:fault name="getVersionFault">
     <soap12:fault use="literal" name="getVersionFault"/>
    wsdl:fault>
   wsdl:operation>
wsdl:binding>

//SOAP:binding是采用SOAP1.1版本。soap12:binding是采用SOAP1.2版本, 并且是采用SOAP规范来形成HTTPRequest

<wsdl:binding name="VersionSOAP12Binding" type="axis2:VersionPortType">
   <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
   <wsdl:operation name="getVersion">
    <soap12:operation soapAction="urn:getVersion" style="document"/>
    <wsdl:input>
     <soap12:body use="literal"/>
    wsdl:input>
    <wsdl:output>
     <soap12:body use="literal"/>
    wsdl:output>
    <wsdl:fault name="getVersionFault">
     <soap12:fault use="literal" name="getVersionFault"/>
    wsdl:fault>
   wsdl:operation>
wsdl:binding>

//此binding 是采用HTTP规范来填写消息内容

<wsdl:binding name="VersionHttpBinding" type="axis2:VersionPortType">
   <http:binding verb="POST"/>
   <wsdl:operation name="getVersion">
    <http:operation location="getVersion"/>
    <wsdl:input>
     <mime:content type="text/xml"/>
    wsdl:input>
    <wsdl:output>
     <mime:content type="text/xml"/>
    wsdl:output>
   wsdl:operation>
wsdl:binding>
//此元素用于描述一个服务定义中其中的一个服务(可定义多个服务)。和此服务所有可访问的端口和访问地址
<wsdl:service name="Version">
   <wsdl:port name="VersionSOAP11port_http" binding="axis2:VersionSOAP11Binding">
    <soap:address location="http://192.9.107.58:8080/axis2/services/Version"/>
   wsdl:port>
   <wsdl:port name="VersionSOAP12port_http" binding="axis2:VersionSOAP12Binding">
    <soap12:address location="http://192.9.107.58:8080/axis2/services/Version"/>
   wsdl:port>
   <wsdl:port name="VersionHttpport" binding="axis2:VersionHttpBinding">
    <http:address location="http://192.9.107.58:8080/axis2/services/Version"/>
   wsdl:port>
wsdl:service>
wsdl:definitions>

你可能感兴趣的:(web-service)