谈谈WebService开发-应用篇(三)-教你如何看WSDL文档
来源:互联网 发布:解除端口占用的命令 编辑:程序博客网 时间:2024/06/05 03:42
作为webservice客户端开发,在日常工作中可能经常会拿到一个对方提供的wsdl地址或文档,那么拿到这个地址后我们如何编写客户端调用代码呢,前面几篇只是以个人经验的方式写了下,那么真正要根据wsdl文档来编写客户端调用代码就必须学会看懂wsdl文档。下面就结合之前基础篇的demo来深入剖析下wsdl文档,最后以图解的方式形象说明下。
本文以之前基础篇的SayHello的Demo来深入分析下wsdl文档的几个部分,个人认为可以共分6部分,下面分别介绍:
<definitions/>
这部分在基础篇里已经介绍,主要说明引用了哪些schema以及schema的位置等,可以看下基础篇的介绍,SayHello的Demo这部分内容如下:
<wsdl:definitions xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:tns="http://impl.service.server.ws.devins.com/"xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:ns2="http://schemas.xmlsoap.org/soap/http"xmlns:ns1="http://service.server.ws.devins.com/" name="SayHelloImplService"targetNamespace="http://impl.service.server.ws.devins.com/">
<types/>
<!-- types schema:约束xml格式 element:用来指定xml中的标签 <sayHello></sayhello> <sayHelloResponse></sayHelloResponse> complexType:说明是一个复合类型 请求 <sayHello> <arg0>string</arg0> </sayhello> 响应 <sayHelloResponse> <return>string</return> </sayHelloResponse> 回看下demo的请求与响应的核心内容 <q0:sayHello> <arg0>devins</arg0> </q0:sayHello> <ns2:sayHelloResponse"> <return>Hello: devins</return> </ns2:sayHelloResponse> --><wsdl:types><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"xmlns:tns="http://service.server.ws.devins.com/" elementFormDefault="unqualified"targetNamespace="http://service.server.ws.devins.com/" version="1.0"><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>
<message/>
<!-- message:用来定义soap消息结构part:部分/组成的意思实际上引用的就是上面schema中的约束格式 --><wsdl:message name="sayHelloResponse"><wsdl:part element="ns1:sayHelloResponse" name="parameters" /></wsdl:message><wsdl:message name="sayHello"><wsdl:part element="ns1:sayHello" name="parameters" /></wsdl:message>
<portType/>
<!-- portType:用来指定服务器端的SEI(接口)operation:表示操作/行为,即SEI中定义的方法input:方法sayHello的输入output:方法sayHello的输出输入输出引用的是上面message的定义 --><wsdl:portType name="ISayHello"><wsdl:operation name="sayHello"><wsdl:input message="ns1:sayHello" name="sayHello" /><wsdl:output message="ns1:sayHelloResponse" name="sayHelloResponse" /></wsdl:operation></wsdl:portType>
<binding/>
<!-- binding:用来指定SEI的实现类type属性:引用<portType>定义<soap:binding style="document">:表示传输的一个document (xml)<input><output>与上节说的相同<soap:body use="literal" />:表示body传输采用文本即xml格式的文本 --><wsdl:binding name="SayHelloImplServiceSoapBinding" type="ns1:ISayHello"><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>
<service>
<!-- service:相同于webservice容器,也可理解为一个工厂name:用于指定客户端的容器类/工厂类,客户端代码从此类开始port:用来指定服务器端的一个入口(对应SEI的实现类)port binding:引用上面定义的port name:容器通过这个方法获得实现类address:客户端真正用于请求的地址回想我们的demo:SayHelloImplService factory = new SayHelloImplService();SayHelloImpl sayHelloImpl = factory.getSayHelloImplPort(); --><wsdl:service name="SayHelloImplService"><wsdl:port binding="tns:SayHelloImplServiceSoapBinding"name="SayHelloImplPort"><soap:address location="http://132.122.239.74:8089/ws/sayhello" /></wsdl:port></wsdl:service>
以上就webservice基础篇里的SayHello为例,详细对wsdl进行了剖析,最后再结合上面的分析以图示的方式形象展现下,希望对需要深入理解wsdl文档的朋友有一定帮助。
图解WSDL
根据WSDL文档中的几部分,以及各部分之间的引用关系,下面以图例的方式展现如下:
说明:上图中的箭头表示引用关系。
0 0
- 谈谈WebService开发-应用篇(三)-教你如何看WSDL文档
- 谈谈WebService开发-应用篇(三)-教你如何看WSDL文档
- 谈谈WebService开发-应用篇(二)-基于CXF-天气预报
- 谈谈WebService开发-基础篇
- 谈谈WebService开发-应用篇(四)-CXF基于Spring的应用
- 谈谈WebService开发-应用篇(一)---手机归属地查询
- WebService --WSDL文档解析
- WebService之WSDL文档深入分析(三)
- WebService学习总结(3):如何查看WSDL文档
- WebService的WSDL文档结构
- webservice的WSDL文档详解
- Webservice-WSDL详解(三)
- webservice soap wsdl 在.NET平台 j2ee平台 LAMP php 三大平台如何做webservice
- WebService之WSDL文档元素实例详解
- WebService学习笔记-WSDL文档分析
- (五) WebService-- WSDL 文档详解
- (七) WebService-- 修改WSDL文档
- webService学习8:wsdl文档解释
- Android ListVeiw的学习总结
- Linux常用命令大全
- Linux服务器上用netstat查看网络状态
- 每天一个linux命令(39):grep 命令
- 基于SVM的道路简单分割
- 谈谈WebService开发-应用篇(三)-教你如何看WSDL文档
- 航天五院获2014年北斗卫星导航产业重大应用示范发展专项支持
- 排序算法
- OpenGL超级宝典笔记四 - 基础纹理2
- 水杯的测试用例
- 欢迎使用CSDN-markdown编辑器
- 转载和积累系列 - linux 内核参数调整优化网络
- android ndk 静态链接库
- 纯JS俄罗斯方块