1、Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计。Web Service服务通常被定义为一组模块化的API,它们可以通过网络进行调用,来执行远程系统的请求服务。 这里我们从一个程序员的视角来观察web service。在传统的程序编码中,存在这各种的函数方法调用。通常,我们知道一个程序模块M中的方法A,向其发出调用请求,并传入A方法需要的参数P,方法A执行完毕后,返回处理结果R。这种函数或方法调用通常发生在同一台机器上的同一程序语言环境下。现在的我们需要一种能够在不同计算机间的不同
2、语言编写的应用程序系统中,通过网络通讯实现函数和方法调用的能力,而Web service正是应这种需求而诞生的。 最普遍的一种说法就是,Web Service = SOAP + HTTP + WSDL。其中,SOAP Simple Object Access Protocol)协议是web service的主体,它通过HTTP或者SMTP等应用层协议进行通讯,自身使用XML文件来描述程序的函数方法和参数信息,从而完成不同主机的异构系统间的计算服务处理。这里的WSDL(Web Services Description Language)web 服务描述语言也是一个XML文档,它通过HTT
3、P向公众发布,公告客户端程序关于某个具体的 Web service服务的URL信息、方法的命名,参数,返回值等。 下面,我们先来熟悉一下SOAP协议,看看它是如何描述程序中的函数方法、参数及结果对象的。 SOAP协议简介 什么是SOAP SOAP 指简单对象访问协议,它是一种基于XML的消息通讯格式,用于网络上,不同平台,不同语言的应用程序间的通讯。可自定义,易于扩展。一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素: • Envelope 元素,标识XML 文档一条 SOAP 消息 • Header 元素,包含头部信息的XML标签 • Bod
4、y 元素,包含所有的调用和响应的主体信息的标签 • Fault 元素,错误信息标签。 以上的元素都在 SOAP的命名空间http://www.w3.org/2001/12/soap-envelope中声明; SOAP的语法规则 • SOAP 消息必须用 XML 来编码 • SOAP 消息必须使用 SOAP Envelope 命名空间 • SOAP 消息必须使用 SOAP Encoding 命名空间 • SOAP 消息不能包含 DTD 引用 • SOAP 消息不能包含 XML 处理指令 SOAP 消息的基本结构 Java代码 1. xml
5、 version="1.0"?>
2. 6、ault>
13. ...
14. ...
15.
16. 7、oap:Header>
8、"
encodingStyle 属性用于定义文档中使用的数据类型。此属性可出现在任何 SOAP 元素中,并会被应用到元素的内容及元素的所有子元素上。
Java代码
1. xml version="1.0"?>
2.
9、ation goes here
7. ...
8.
xml version="1.0"?>
10、 actor 属性,语法soap:actor="URI" 通过沿着消息路径经过不同的端点,SOAP 消息可从某个发送者传播到某个接收者。并非 SOAP 消息的所有部分均打算传送到 SOAP 消息的最终端点,不过,另一个方面,也许打算传送给消息路径上的一个或多个端点。SOAP 的 actor 属性可被用于将 Header 元素寻址到一个特定的端点。 · mustUnderstand 属性 ,语法soap:mustUnderstand="0|1" SOAP 的 mustUnderstand 属性可用于标识标题项对于要对其进行处理的接收者来说是强制的还是可选的。假如您向 Head
11、er 元素的某个子元素添加了 "mustUnderstand="1",则要求处理此头部的接收者必须认可此元素。
Java代码
1. xml version="1.0"?>
2.
13、 14、"?>
2. 15、Envelope>
xml version="1.0"?>
17、GetPriceResponse xmlns:m="
7. 18、
20、velope
8. xmlns:soap="http://www.w3.org/2001/12/soap-envelope"
9. soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding">
10. 21、
15. 22、 xmlns:m="
23、sion="1.0"?>
6. 24、sponse>
13. 27、g="UTF-8"?>
2. 28、ma>
12. 29、e name="toSayHelloResponse">
22. 30、"sayHelloResponse">
30. 31、oSayHello" parameterOrder="userName">
38.
39.
40. 32、3.
44. 33、//schemas.xmlsoap.org/soap/http"
51. style="rpc"> 34、 37、" encoding="UTF-8"?>
41、put message="tns:sayHello">
44、elloException">
45、rt>
46、targetNamespace="
7. name="Example">
8. ……
9. ……
10.






