web service—底层调用本质+WSDL文档解析
2015-08-13 22:26
309 查看
前面两篇博客已经实现了两个小例子,大致了解了整个流程。那么这里讲讲webservice底层调用的本质和wsdl文档具体的含义。
一、底层调用的本质
说白了就是xml文档的生成、传递、解析的过程。
客户端生成xml文件后通过网络传送给服务器,服务器解析xml,获取参数执行方法得到返回值,之后生成xml文件,再传输给客户端,客户端解析xml后显示数据。
![](http://img.blog.csdn.net/20150813193535921)
二、WSDL文档解析
先看一下整体的分析图:
![](http://img.blog.csdn.net/20150813193655103)
1.接口端
先看一个整体的文档框架
![](http://img.blog.csdn.net/20150813211210460)
文档中含有2n个message(n指的是方法个数),一个webservice操作需要从客户端发消息给服务端,服务端有一个响应消息返回。所以一次web service调用需要两个消息。
wsdl:portType节点如下:
![](http://img.blog.csdn.net/20150813212657893)
里面含有N个operation,而且每个操作包含input和output消息,消息的name和wsdl:message 标签的name属性相对应,其实一次webservice调用不是调用方法,是发送soap消息(xml文档)
对于sayHi的input消息来说:name=“sayHi”,找到wsdl:message的name属性相同的标签,具体如下:
![](http://img.blog.csdn.net/20150813220105462)
传入消息是:sayHi元素,从wsdl:type中找到element元素name=“sayHi”,然后找到类型是sayHi的标签,如下:
![](http://img.blog.csdn.net/20150813220423115)
所以传入的消息格式是:
![](http://img.blog.csdn.net/20150813220931701)
返回的消息格式如下:
2.实现端
先看整体的结构:
![](http://img.blog.csdn.net/20150813221730403)
包含了binding和service的标签,service里面包含了webservice的服务地址,如下:
![](http://img.blog.csdn.net/20150813221921216)
标记的部分是web service发布的服务地址
其中binding部分包含了详细的方法定义和传输风格(document,面向文档),如下:
![](http://img.blog.csdn.net/20150813222200864)
三、总结
wsdl文档描述了web service的3个方面:
What:“什么”操作
How:应该“怎样”调用
Where:该web service的服务地址
只要得到web service的wsdl文档就可以调用web service。大家可以试着分析下。其实这个文档并不难,不要被它太多的标签吓唬。
一、底层调用的本质
说白了就是xml文档的生成、传递、解析的过程。
客户端生成xml文件后通过网络传送给服务器,服务器解析xml,获取参数执行方法得到返回值,之后生成xml文件,再传输给客户端,客户端解析xml后显示数据。
二、WSDL文档解析
先看一下整体的分析图:
1.接口端
先看一个整体的文档框架
文档中含有2n个message(n指的是方法个数),一个webservice操作需要从客户端发消息给服务端,服务端有一个响应消息返回。所以一次web service调用需要两个消息。
wsdl:portType节点如下:
里面含有N个operation,而且每个操作包含input和output消息,消息的name和wsdl:message 标签的name属性相对应,其实一次webservice调用不是调用方法,是发送soap消息(xml文档)
对于sayHi的input消息来说:name=“sayHi”,找到wsdl:message的name属性相同的标签,具体如下:
传入消息是:sayHi元素,从wsdl:type中找到element元素name=“sayHi”,然后找到类型是sayHi的标签,如下:
所以传入的消息格式是:
//出现次数0-1 <sayHi> <arg0>字符串</arg0> </sayHi>传出的消息分析同上面,sayHiResponse从schema中查找,如图:
返回的消息格式如下:
<sayHiResponse> <return>string</return> </sayHiResponse>
2.实现端
先看整体的结构:
包含了binding和service的标签,service里面包含了webservice的服务地址,如下:
标记的部分是web service发布的服务地址
其中binding部分包含了详细的方法定义和传输风格(document,面向文档),如下:
三、总结
wsdl文档描述了web service的3个方面:
What:“什么”操作
How:应该“怎样”调用
Where:该web service的服务地址
只要得到web service的wsdl文档就可以调用web service。大家可以试着分析下。其实这个文档并不难,不要被它太多的标签吓唬。
相关文章推荐
- HDU1253-胜利大逃亡
- 选择排序SelectSort
- 创建表空间
- -[UIViewController _loadViewFromNibNamed:bundle
- iOS开发-Objc arrayWithCapacity: 深入分析
- 颜色直方图实现彩色图象分割
- HDU 4260(The End of The World-Hanoi塔从中间状态移动)
- coderforce 560 B
- Remove Duplicates from Sorted List
- linux内核定时器
- 新手笔记之print(?)
- cocoaPod使用教程
- 微信公众帐号开发教程
- Java中的ReentrantLock和synchronized两种锁定机制的对比
- EL表达式
- android:CheckBox方法
- ggplot2——坐标系篇
- URAL 1780 G - Gray Code 找规律
- [leetcode] Delete Node in a Linked List 删除链表中的一个结点
- spoj1182 Sorted bit squence