webservice之WSDL解析
来源:互联网 发布:mac mini 2016会更新吗 编辑:程序博客网 时间:2024/06/04 19:03
WSDL: Web Services Description Language 网页服务描述语言
详解WSDL文档元素:
文件是以XML格式定义的,内容分成了5大元素:
1、<types>:webservice使用的数据类型,它是独立以机器和语言的类型定义,这些数据类型被<message>标签所使用。
2、<message>:webservice使用的消息,它定义了webservice函数的参数。在webservice中输入参数和输出参数需要分开定义,使用不同的message标签体。message定义的输入输出参数,被<portType>标签使用。
3、<portType>:webservice执行操作。该标签引用<message>标签定义的函数来描述函数的签名(操作名、输入参数、输出参数)
4、<binding>:webservice通信协议。在portType中定义的每一项操作,都在此绑定中实现。
5、<service>:该标签定义每一绑定的端口地址。
WSDL文档可以分为两部分。顶部分由抽象定义组成,而底部分则由具体描述组成。抽象部分以独立于平台和语言的方式定义SOAP消息,它们并不包含任何随机器或语言而变的元素。这就定义了一系列服务,截然不同的应用都可以实现。具体部分,如数据的序列化则归入底部分,因为它包含具体的定义。在上述的文档元素中,<types>、<message>、<portType>属于抽象定义层,<binding>、<service>属于具体定义层。所有的抽象可以是单独存在于别的文件中,也可以从主文档中导入。
<?xml version='1.0' encoding='UTF-8'?><wsdl:definitions name="HelloWorldService" targetNamespace="http://test.demo1/" xmlns:ns1="http://schemas.xmlsoap.org/soap/http" xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:tns="http://test.demo1/" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <wsdl:types> <xs:schema elementFormDefault="unqualified" targetNamespace="http://test.demo1/" version="1.0" xmlns:tns="http://test.demo1/" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="sayHello" type="tns:sayHello"/> <xs:element name="sayHelloResponse" type="tns:sayHelloResponse"/> <xs:complexType name="sayHello"> <xs:sequence> <xs:element minOccurs="0" name="arg0" type="xs:string"/> </xs:sequence> </xs:complexType> <xs:complexType name="sayHelloResponse"> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:string"/> </xs:sequence> </xs:complexType> </xs:schema> </wsdl:types> <wsdl:message name="sayHelloResponse"> <wsdl:part element="tns:sayHelloResponse" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:message name="sayHello"> <wsdl:part element="tns:sayHello" name="parameters"> </wsdl:part> </wsdl:message> <wsdl:portType name="HelloWorld"> <wsdl:operation name="sayHello"> <wsdl:input message="tns:sayHello" name="sayHello"> </wsdl:input> <wsdl:output message="tns:sayHelloResponse" name="sayHelloResponse"> </wsdl:output> </wsdl:operation> </wsdl:portType> <wsdl:binding name="HelloWorldServiceSoapBinding" type="tns:HelloWorld"> <soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/> <wsdl:operation name="sayHello"> <soap:operation soapAction="" style="document"/> <wsdl:input name="sayHello"> <soap:body use="literal"/> </wsdl:input> <wsdl:output name="sayHelloResponse"> <soap:body use="literal"/> </wsdl:output> </wsdl:operation> </wsdl:binding> <wsdl:service name="HelloWorldService"> <wsdl:port binding="tns:HelloWorldServiceSoapBinding" name="HelloWorldPort"> <soap:address location="http://localhost:8080/helloWorld"/> </wsdl:port> </wsdl:service> </wsdl:definitions>
1.WSDL文档的根元素:
<wsdl:definitions xmlns:wsdl=""
xmlns:ns1=""
xmlns:ns=""
xmlns:wsaw=""
xmlns:http=""
xmlns:ax21=""
xmlns:xs=""
xmlns:mime=""
xmlns:soap=""
xmlns:soap12=""
targetNamespace="">
<definitions>定义了文档中用到的各个xml元素的namespace缩写,也界定了本文档自己的 targetNamespace="",这意味着其它的XML要引用当前XML中的元素时,要声明这个namespace。注意xmlns:ns=""这个声明,它标示了使用ns这个前缀指向自身的命名空间。
2.WSDL文档数据类型定义元素:<types>:
<wsdl:types>
<xs:schema xmlns:ax22=""
attributeFormDefault="qualified" elementFormDefault="qualified"
targetNamespace="">
<xs:import namespace="" />
<xs:element name="returnBook">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="isbn" nillable="true"
type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="login"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="userName" nillable="true" type="xs:string" /> <xs:element minOccurs="0" name="passWord" nillable="true" type="xs:string" /> </xs:sequence> </xs:complexType> </xs:element> <xs:element name="loginResponse"> <xs:complexType> <xs:sequence> <xs:element minOccurs="0" name="return" type="xs:boolean" /> </xs:sequence> </xs:complexType> </xs:element>
这里定义webservice的一个元素名称returnBook,就是service的一个函数名称(见图),定义了混合类型数据类型,类型是string类型,名称叫isbn
3.WSDL文档消息体定义元素:< message >:
<wsdl:message name="loginRequest">
<wsdl:part name="parameters" element="ns:login" />
</wsdl:message>
<wsdl:message name="loginResponse">
<wsdl:part name="parameters" element="ns:loginResponse" />
</wsdl:message>
这里定义定义了消息请求,这里定义使用的消息是loginRequest和loginResponse,它分别引用了types中的login和loginResponse元素。在types中的login和loginResponse元素定义好了参数类型。有没有Response消息,主要是看你的函数是否有返回值,如果是void,想returnBook这函数就没有returnBookResponse。
4.WSDL文档操作定义元素:< portType >:
<wsdl:portType name="LibraryPortType">
<wsdl:operation name="login">
<wsdl:input message="ns:loginRequest" wsaw:Action="urn:login" />
<wsdl:output message="ns:loginResponse" wsaw:Action="urn:loginResponse" />
</wsdl:operation>
定义了操作名称login,输入使用的消息是loginRequest,Action是urn:login,输出ns:loginResponse,Action是:urn:loginResponse
5、WSDL文档操作绑定协议<binding>:
<wsdl:binding name="LibrarySoap11Binding" type="ns:LibraryPortType"> <soap:binding transport="" /> <wsdl:operation name="login"> <soap:operation soapAction="urn:login" /> <wsdl:input> <soap:body use="literal" /> </wsdl:input> <wsdl:output> <soap:body use="literal" /> </wsdl:output> </wsdl:operation>
首先<binding>标签使用<soap:binding>的transport和style属性定义了Web Service的通讯协议HTTP和SOAP的请求风格RPC。其次<operation>子标签将portType中定义的 operation同SOAP的请求绑定,定义了操作名称soapAction,输出输入参数和异常的编码方式及命名空间。
如果客户端要调用这方法就要声明是这soapAction名称urn:login。
6、WSDL文档绑定服务端口地址<service>:
<wsdl:service name="Library"> <wsdl:port name="LibraryHttpSoap11Endpoint" binding="ns:LibrarySoap11Binding"> <soap:address location="" /> </wsdl:port> <wsdl:port name="LibraryHttpSoap12Endpoint" binding="ns:LibrarySoap12Binding"> <soap12:address location="" /> </wsdl:port> <wsdl:port name="LibraryHttpEndpoint" binding="ns:LibraryHttpBinding"> <http:address location="" /> </wsdl:port> </wsdl:service>
这里描述webservice的服务名称是Library,service是一套<port>元素。在一一对应形式下,每个<port>元素都和一个location关联。如果同一个<binding>有多个<port>元素与之关联,可以使用额外的URL地址作为替换。
- webservice之WSDL解析
- WebService --WSDL文档解析
- webservice wsdl解析
- Webservice WSDL解析
- WebService之WSDL
- webservice之wsdl
- WebService之WSDL
- webservice之wsdl详解
- WebService之WSDL
- webservice之wsdl
- WebService之WSDL
- webservice之wsdl详解
- WebService之WSDL
- WebService之发布自己的WebService例子以及WSDL解析,Ajax访问WebService以及注解修改WSDL
- java-工具-Webservice wsdl解析
- webservice解析wsdl出错解决办法
- WebService中的WSDL详细解析
- WebService中的WSDL详细解析
- Java SimpleDateFormat.setLenient(boolean lenient)方法使用
- ffmpeg 安装 libwave 解决 /usr/include/wavpack/wavpack.h:60: error: expected specifier-qualifier-list
- Memcached性能检测
- android接入支持海外的支付,visa,mastercard
- poj2376
- webservice之WSDL解析
- C#学习之接口和抽象类
- zookeeperviewer
- Asp.net笔记
- Mysql CPU占用高的问题解决方法小结
- UML——宏观把控(一)
- llinux 的一些命令和错误
- 广义表的用法
- Unity3D教程:手游开发常用排序算法