webservice的WSDL文档详解

WSDL – WebService Description Language – Web服务描述语言。
–通过XML形式说明服务在什么地方-地址
–通过XML形式说明服务提供什么样的方法 – 如何调用
–服务端给客户端提供的一个说明书
–约束了客户端和服务端之间通信的消息格式

Wsdl文档从下往上读:
Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。(入参和出参的数据类型约束)
Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构(入参和出参)。
Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对(方法)。
PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持(服务类)。 要关心的属性name
Binding - 特定服务访问点与具体服务类的绑定(不看内容,看关系)。
Port - 定义为webservice单个服务访问点。 要关心的属性:name,Binding属性用于查找binding元素

Service- 相关服务访问点的集合,里面有多个服务的访问点,一般都是一个服务访问点,要关心的属性:name

例如:国内手机号码归属地查询WEB服务
http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx?wsdl

1.Service–找到服务访问点的集合Service:
(1)name属性很重要,在用wsimport客户端调用服务时,首先就要根据name属性创建一个服务访问点集合对象;

<wsdl:service name="MobileCodeWS">

2.Port–定义为webservice单个服务访问点:
(1)name–在用wsimport客户端调用服务时,可以根据name属性获取服务类的接口;
(2)binding–binding属性和标签中的name属性关联;

<wsdl:port name="MobileCodeWSSoap" binding="tns:MobileCodeWSSoap">
    <soap:address location="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx" />
wsdl:port>

3.Binding –特定服务访问点与具体服务类的绑定(不看内容,看关系):
(1)name属性–name属性和Port标签的binding属性关联;
(2)type属性–type属性和标签中的name属性关联;

    <wsdl:binding name="MobileCodeWSSoap" type="tns:MobileCodeWSSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="getMobileCodeInfo">
            <soap:operation soapAction="http://WebXml.com.cn/getMobileCodeInfo"
                style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            wsdl:output>
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <soap:operation soapAction="http://WebXml.com.cn/getDatabaseInfo"
                style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            wsdl:output>
        wsdl:operation>
    wsdl:binding>

4.PortType - 对于某个访问入口点类型所支持的操作的抽象集合,这些操作可以由一个或多个服务访问点来支持(服务类):
(1)name属性–name属性和Binding中的type属性关联;

    <wsdl:portType name="MobileCodeWSSoap">
        <wsdl:operation name="getMobileCodeInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地省份、地区和手机卡类型信息h3>
                <p>输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID)
                    免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getMobileCodeInfoSoapIn" />
            <wsdl:output message="tns:getMobileCodeInfoSoapOut" />
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地数据库信息h3>
                <p>输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getDatabaseInfoSoapIn" />
            <wsdl:output message="tns:getDatabaseInfoSoapOut" />
        wsdl:operation>
    wsdl:portType>

5.Operation - 对服务中所支持的操作的抽象描述,一般单个Operation描述了一个访问入口的请求/响应消息对(方法),PortType 和 Binding标签下都有Operation标签:
(1)在PortType标签下的Operation标签:

        <wsdl:operation name="getMobileCodeInfo">
            <wsdl:input message="tns:getMobileCodeInfoSoapIn" />
            <wsdl:output message="tns:getMobileCodeInfoSoapOut" />
        wsdl:operation>

(2)在binding标签下的Operation标签:

        <wsdl:operation name="getMobileCodeInfo">
            <soap:operation soapAction="http://WebXml.com.cn/getMobileCodeInfo"
                style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            wsdl:output>
        wsdl:operation>

6.Message - 通信消息的数据结构的抽象类型化定义。使用Types所定义的类型来定义整个消息的数据结构(入参和出参)。

    <wsdl:message name="getMobileCodeInfoSoapIn">
        <wsdl:part name="parameters" element="tns:getMobileCodeInfo" />
    wsdl:message>

7.Types - 数据类型定义的容器,它使用某种类型系统(一般地使用XML Schema中的类型系统)。(入参和出参的数据类型约束)

    <wsdl:types>
        <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">
            <s:element name="getMobileCodeInfo">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" name="mobileCode"
                            type="s:string" />
                        <s:element minOccurs="0" maxOccurs="1" name="userID"
                            type="s:string" />
                    s:sequence>
                s:complexType>
            s:element>
            <s:element name="getMobileCodeInfoResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1"
                            name="getMobileCodeInfoResult" type="s:string" />
                    s:sequence>
                s:complexType>
            s:element>
            <s:element name="getDatabaseInfo">
                <s:complexType />
            s:element>
            <s:element name="getDatabaseInfoResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1"
                            name="getDatabaseInfoResult" type="tns:ArrayOfString" />
                    s:sequence>
                s:complexType>
            s:element>
            <s:complexType name="ArrayOfString">
                <s:sequence>
                    <s:element minOccurs="0" maxOccurs="unbounded" name="string"
                        nillable="true" type="s:string" />
                s:sequence>
            s:complexType>
            <s:element name="string" nillable="true" type="s:string" />
            <s:element name="ArrayOfString" nillable="true"
                type="tns:ArrayOfString" />
        s:schema>
    wsdl:types>

完整的wsdl文档:



<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
    xmlns:tns="http://WebXml.com.cn/" xmlns:s="http://www.w3.org/2001/XMLSchema"
    xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/" xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
    targetNamespace="http://WebXml.com.cn/">
    <wsdl:documentation>
        <a href="http://www.webxml.com.cn/" target="_blank">WebXml.com.cna>
        <strong>国内手机号码归属地查询WEB服务strong>
        ,提供最新的国内手机号码段归属地数据,每月更新。
        <br />
        使用本站 WEB 服务请注明或链接本站:
        <a href="http://www.webxml.com.cn/" target="_blank">http://www.webxml.com.cn/a>
        感谢大家的支持!
        <br />
    wsdl:documentation>
    <wsdl:types>
        <s:schema elementFormDefault="qualified" targetNamespace="http://WebXml.com.cn/">
            <s:element name="getMobileCodeInfo">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1" name="mobileCode"
                            type="s:string" />
                        <s:element minOccurs="0" maxOccurs="1" name="userID"
                            type="s:string" />
                    s:sequence>
                s:complexType>
            s:element>
            <s:element name="getMobileCodeInfoResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1"
                            name="getMobileCodeInfoResult" type="s:string" />
                    s:sequence>
                s:complexType>
            s:element>
            <s:element name="getDatabaseInfo">
                <s:complexType />
            s:element>
            <s:element name="getDatabaseInfoResponse">
                <s:complexType>
                    <s:sequence>
                        <s:element minOccurs="0" maxOccurs="1"
                            name="getDatabaseInfoResult" type="tns:ArrayOfString" />
                    s:sequence>
                s:complexType>
            s:element>
            <s:complexType name="ArrayOfString">
                <s:sequence>
                    <s:element minOccurs="0" maxOccurs="unbounded" name="string"
                        nillable="true" type="s:string" />
                s:sequence>
            s:complexType>
            <s:element name="string" nillable="true" type="s:string" />
            <s:element name="ArrayOfString" nillable="true"
                type="tns:ArrayOfString" />
        s:schema>
    wsdl:types>
    <wsdl:message name="getMobileCodeInfoSoapIn">
        <wsdl:part name="parameters" element="tns:getMobileCodeInfo" />
    wsdl:message>
    <wsdl:message name="getMobileCodeInfoSoapOut">
        <wsdl:part name="parameters" element="tns:getMobileCodeInfoResponse" />
    wsdl:message>
    <wsdl:message name="getDatabaseInfoSoapIn">
        <wsdl:part name="parameters" element="tns:getDatabaseInfo" />
    wsdl:message>
    <wsdl:message name="getDatabaseInfoSoapOut">
        <wsdl:part name="parameters" element="tns:getDatabaseInfoResponse" />
    wsdl:message>
    <wsdl:message name="getMobileCodeInfoHttpGetIn">
        <wsdl:part name="mobileCode" type="s:string" />
        <wsdl:part name="userID" type="s:string" />
    wsdl:message>
    <wsdl:message name="getMobileCodeInfoHttpGetOut">
        <wsdl:part name="Body" element="tns:string" />
    wsdl:message>
    <wsdl:message name="getDatabaseInfoHttpGetIn" />
    <wsdl:message name="getDatabaseInfoHttpGetOut">
        <wsdl:part name="Body" element="tns:ArrayOfString" />
    wsdl:message>
    <wsdl:message name="getMobileCodeInfoHttpPostIn">
        <wsdl:part name="mobileCode" type="s:string" />
        <wsdl:part name="userID" type="s:string" />
    wsdl:message>
    <wsdl:message name="getMobileCodeInfoHttpPostOut">
        <wsdl:part name="Body" element="tns:string" />
    wsdl:message>
    <wsdl:message name="getDatabaseInfoHttpPostIn" />
    <wsdl:message name="getDatabaseInfoHttpPostOut">
        <wsdl:part name="Body" element="tns:ArrayOfString" />
    wsdl:message>
    <wsdl:portType name="MobileCodeWSSoap">
        <wsdl:operation name="getMobileCodeInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地省份、地区和手机卡类型信息h3>
                <p>输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID)
                    免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getMobileCodeInfoSoapIn" />
            <wsdl:output message="tns:getMobileCodeInfoSoapOut" />
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地数据库信息h3>
                <p>输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getDatabaseInfoSoapIn" />
            <wsdl:output message="tns:getDatabaseInfoSoapOut" />
        wsdl:operation>
    wsdl:portType>
    <wsdl:portType name="MobileCodeWSHttpGet">
        <wsdl:operation name="getMobileCodeInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地省份、地区和手机卡类型信息h3>
                <p>输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID)
                    免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getMobileCodeInfoHttpGetIn" />
            <wsdl:output message="tns:getMobileCodeInfoHttpGetOut" />
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地数据库信息h3>
                <p>输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getDatabaseInfoHttpGetIn" />
            <wsdl:output message="tns:getDatabaseInfoHttpGetOut" />
        wsdl:operation>
    wsdl:portType>
    <wsdl:portType name="MobileCodeWSHttpPost">
        <wsdl:operation name="getMobileCodeInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地省份、地区和手机卡类型信息h3>
                <p>输入参数:mobileCode = 字符串(手机号码,最少前7位数字),userID = 字符串(商业用户ID)
                    免费用户为空字符串;返回数据:字符串(手机号码:省份 城市 手机卡类型)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getMobileCodeInfoHttpPostIn" />
            <wsdl:output message="tns:getMobileCodeInfoHttpPostOut" />
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <wsdl:documentation>
                <br />
                <h3>获得国内手机号码归属地数据库信息h3>
                <p>输入参数:无;返回数据:一维字符串数组(省份 城市 记录数量)。p>
                <br />
            wsdl:documentation>
            <wsdl:input message="tns:getDatabaseInfoHttpPostIn" />
            <wsdl:output message="tns:getDatabaseInfoHttpPostOut" />
        wsdl:operation>
    wsdl:portType>
    <wsdl:binding name="MobileCodeWSSoap" type="tns:MobileCodeWSSoap">
        <soap:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="getMobileCodeInfo">
            <soap:operation soapAction="http://WebXml.com.cn/getMobileCodeInfo"
                style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            wsdl:output>
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <soap:operation soapAction="http://WebXml.com.cn/getDatabaseInfo"
                style="document" />
            <wsdl:input>
                <soap:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap:body use="literal" />
            wsdl:output>
        wsdl:operation>
    wsdl:binding>
    <wsdl:binding name="MobileCodeWSSoap12" type="tns:MobileCodeWSSoap">
        <soap12:binding transport="http://schemas.xmlsoap.org/soap/http" />
        <wsdl:operation name="getMobileCodeInfo">
            <soap12:operation soapAction="http://WebXml.com.cn/getMobileCodeInfo"
                style="document" />
            <wsdl:input>
                <soap12:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap12:body use="literal" />
            wsdl:output>
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <soap12:operation soapAction="http://WebXml.com.cn/getDatabaseInfo"
                style="document" />
            <wsdl:input>
                <soap12:body use="literal" />
            wsdl:input>
            <wsdl:output>
                <soap12:body use="literal" />
            wsdl:output>
        wsdl:operation>
    wsdl:binding>
    <wsdl:binding name="MobileCodeWSHttpGet" type="tns:MobileCodeWSHttpGet">
        <http:binding verb="GET" />
        <wsdl:operation name="getMobileCodeInfo">
            <http:operation location="/getMobileCodeInfo" />
            <wsdl:input>
                <http:urlEncoded />
            wsdl:input>
            <wsdl:output>
                <mime:mimeXml part="Body" />
            wsdl:output>
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <http:operation location="/getDatabaseInfo" />
            <wsdl:input>
                <http:urlEncoded />
            wsdl:input>
            <wsdl:output>
                <mime:mimeXml part="Body" />
            wsdl:output>
        wsdl:operation>
    wsdl:binding>
    <wsdl:binding name="MobileCodeWSHttpPost" type="tns:MobileCodeWSHttpPost">
        <http:binding verb="POST" />
        <wsdl:operation name="getMobileCodeInfo">
            <http:operation location="/getMobileCodeInfo" />
            <wsdl:input>
                <mime:content type="application/x-www-form-urlencoded" />
            wsdl:input>
            <wsdl:output>
                <mime:mimeXml part="Body" />
            wsdl:output>
        wsdl:operation>
        <wsdl:operation name="getDatabaseInfo">
            <http:operation location="/getDatabaseInfo" />
            <wsdl:input>
                <mime:content type="application/x-www-form-urlencoded" />
            wsdl:input>
            <wsdl:output>
                <mime:mimeXml part="Body" />
            wsdl:output>
        wsdl:operation>
    wsdl:binding>
    <wsdl:service name="MobileCodeWS">
        <wsdl:port name="MobileCodeWSSoap" binding="tns:MobileCodeWSSoap">
            <soap:address location="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx" />
        wsdl:port>
        <wsdl:port name="MobileCodeWSSoap12" binding="tns:MobileCodeWSSoap12">
            <soap12:address
                location="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx" />
        wsdl:port>
        <wsdl:port name="MobileCodeWSHttpGet" binding="tns:MobileCodeWSHttpGet">
            <http:address location="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx" />
        wsdl:port>
        <wsdl:port name="MobileCodeWSHttpPost" binding="tns:MobileCodeWSHttpPost">
            <http:address location="http://ws.webxml.com.cn/WebServices/MobileCodeWS.asmx" />
        wsdl:port>
    wsdl:service>
wsdl:definitions>

你可能感兴趣的:(webservice,wsdl)