当前位置:首页 >> 信息与通信 >>

简单对象访问协议SOAP原理及抓包分析


目录
摘要 ................................................................................................................ I
ABSTRACT ...................................................

.................................................. II

1 引言 ........................................................................................................... 1 2 概论 ........................................................................................................... 2
2.1 WEB SERVICE 简介 ................................................................................................ 2 2.2 WS 的体系结构 .................................................................................................... 3 2.3 WEB 服务 .............................................................................................................. 4

3 SOAP 协议................................................................................................. 6
3.1 3.2 3.3 3.4 3.5 SOAP 协议 ............................................................................................................ 6 SOAP 消息 ............................................................................................................ 7 SOAP=RPC+HTTP+XML.................................................................................... 8 XML 和 HTML 的差异 ....................................................................................... 9 SOAP 的前景 ..................................................................................................... 10

4 SOAP 协议结构........................................................................................ 11
4.1 SOAP 协议简介 .................................................................................................. 11 4.2 SOAP 协议结构及语法规则 .............................................................................. 12 4.3 SOAP 消息的基本结构 ..................................................................................... 12

5 SOAP 协议的应用.................................................................................... 14
5.1 SOAP 和 WSDL ................................................................................................ 14 5.2 SOAP 体系结构 ................................................................................................. 14 5.3 SOAP 请求响应机制 ......................................................................................... 16 5.4 SOAP 模式与实现................................................................................................ 20

6 SOAP 抓包分析实验 ............................................................................... 25

7 结论 .......................................................................................................... 29

致谢 ............................................................................................................... 30

参考文献 ...................................................................................................... 31





SOAP(Simple Object Access Protocol) ,它是一种标准消息传递协议,通常是 Web Service 的事实标准。 SOAP 规范描述了四个主要的构件.使用信封形式的封装数据和路由路径的格 式化规范,传输或是绑定协议,编码规则,RPC 调用机制 . 信封定义一个为描述 消息内容的规范,这个消息有一种轮流排队处理的含义.协议绑定能够使用低级别 的 HTTP 协议传递 SOAP 消息提供一个一般的机制.编码规则提够一种规范为了映 射各种各样应用数据到基于标签表现的 TAG。 最后 RPC 机制提够了一种表示远程 调用和他们返回值的方法。 网络中,不管你的 Web service 是用什么工具,什么语言写出来的,只要你用 SOAP 协议通过 HTTP 来调用它,总体结构都一致。通常,你用你自己喜欢的语言 (如 VB 6 或者 VB.NET)来构建你的 Web service,然后用 SOAP Toolkit 或者.NET 的内建支持来把它暴露给 Web 客户。于是,任何语言,任何平台上的客户都可以 阅读其 WSDL 文档,以调用这个 Web service。客户根据 WSDL 描述文档,会生成 一个 SOAP 请求消息。Web service 都是放在 Web 服务器 (如 IIS) 后面的,客户 生成的 SOAP 请求会被嵌入在一个 HTTP POST 请求中,发送到 Web 服务器来。 Web 服务器再把这些请求转发给 Web service 请求处理器。 请求处理器的作用在于, 解析收到的 SOAP 请求,调用 Web service,然后再生成相应的 SOAP 应答。Web 服务器得到 SOAP 应答后,会再通过 HTTP 应答的方式把它送回到客户端。 关键字:RFC,Web Service,HTTP,WSDL

I

Abstract
SOAP (Simple Object Access Protocol), which is a standard messaging protocol,communication.Is often the de facto standard Web Service. SOAP specification describes four main components. Use the envelope forms of packaging and routing path data format specifications, transmission or binding agreement, coding rules, RPC call mechanism. Envelope to define a standard for describing the message content, the news There is a rotation queue processing means. protocol bindings to the HTTP protocol using low-level SOAP message passed to provide a general mechanism. encoding rules provide enough of a standard application for mapping data to a variety of labels based on the performance of TAG. Finally, a RPC mechanism to provide enough distance call and they said the method return value. Whether your Web service is what tools, what language to write out, as long as you use SOAP protocol via HTTP to call it, are consistent with the overall structure. Typically, you use your own preferred language (such as VB 6 or VB.NET) to build your Web service, then use the SOAP Toolkit or. NET's built-in support to expose it to the Web client. Thus, any language, any platform, customers can read the WSDL document to call the Web service. Customers under the WSDL description document, will generate a SOAP request message. Web service are on the Web server (such as IIS) later, the customer generates the SOAP request will be embedded in a HTTP o??Nù[??" ?v?e?_?v’N??(u

II

?Sb4x?No??N”^(u?0Q ?z?T?T?y?? YKN???v<h<h ? NeQ?v?r?`

III

??[° ú s" W?NW E B à ? ?– b" ?v?v h 0 e W e b g? R/f bì Yù VyrQ? N? [à z??(uR P C ? R bQ? ?~ N?v N*Nù[a???L??? P r o c e d u then generate the e m o t e

appropriate SOAP response. Web server to get the SOAP response, will then respond by way of HTTP send it back to the client. bbs.bitsCN.com China Webmaster Forum KEYWORDS: RFC,Web Service,HTTP,WSDL

IV

简单对象访问协议 SOAP 原理及抓包分析

1 引言
随着计算机技术的不断发展, 现代企业面临的环境越来越复杂, 其信息系统大 多数为多平台、 多系统的复杂系统。 这就要求今天的企业解决方案具有广泛的兼容 能力,可以支持不同的系统平台、数据格式和多种连接方式,要求在 Internet 环境 下,实现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的,而且 要提供对 Web 应用程序的可靠访问。 随着异种计算环境的不断增加,各种系统间的互操作性就愈显得必要,要求 系统能够无缝地进行通信和共享数据,从而在 Internet 环境下,消除巨大的信息 孤岛,实现信息共享、进行数据交换,达到信息的一致性。Web services 希望实现 不同的系统之间能够用"软件-软件对话"的方式相互调用,打破了软件应用、网站 和各种设备之间的格格不入的状态,实现"基于 WEB 无缝集成"的目标。 Web 服务是我们能够 对因特网或网络上的 一个对象进行远程调 用 RPC (Remote Procedure Call) 。Web 服务使用中性平台标准(例如:HTTP 和 XML) , 这使我们可以对客户完全隐藏执行任务的细节,客户只需要知道这个服务的 URL 或方法调用使用的数据类型, 而不需要知道该任务到底是一个在 Linux 上运行的还 是一个在 Windows 上运行的用 Java 编程的 ASP.NET 服务。 本论文中所研究的就是网络中 SOAP 协议的应用, 主要是更深刻的理解 SOAP 协议在网络中客户端和服务器端进行通信,信息交流的过程中如何实现,相对于 其他协议有哪些优点。而对于 Web 服务来讲,SOAP 协议又有何独特的意义。

1

简单对象访问协议 SOAP 原理及抓包分析

2 概论

2.1 Web Service 简介
Web 服务(Web Service)是基于 XML 和 HTTPS 的一种服务,其通信协议 主要基于 SOAP,服务的描述通过 WSDL,通过 UDDI 来发现和获得服务的元 数据。 Web service 到底是什么;在什么情况下你应该使用 Web service。 分布式应用程序和浏览器 研究一下当前的应用程序开发,你会发现一个绝对的倾向:人们开始偏爱 基于浏览器的受客户应用程序。这当然不是因为受客户能够提供更好的用户界 面,而是因为它能够避免花在桌面应用程序发布上的高成本。发布桌面应用程 序成本很高,一半是因为应用程序安装和配置的问题,另一半是因为客户和服 务器之间通信的问题。 传统的 Windows 富客户应用程序使用 DCOM 来与服务器进行通信和调用 远程对象。 配置好 DCOM 使其在一个大型的网络中正常工作将是一个极富挑战 性的工作,同时也是许多 IT 工程师的噩梦。事实上,许多 IT 工程师宁愿忍受 浏览器所带来的功能限制,也不愿在局域网上去运行一个 DCOM。在我看来, 结果就是一个发布容易,但开发难度大而且用户界面极其受限的应用程序。极 端的说,就是你花了更多的资金和时间,却开发出从用户看来功能更弱的应用 程序。不信?问问你的会计师对新的基于浏览器的会计软件有什么想法:绝大 多数商用程序用户希望使用更加友好的 Windows 用户界面。 关于客户端与服务器的通信问题,一个完美的解决方法是使用 HTTP 协议 来通信。这是因为任何运行 Web 浏览器的机器都在使用 HTTP 协议。同时,当 前许多防火墙也配置为只允许 HTTP 连接。 Web 服务(Web Service WS)通常指通过 Web 提供的各种服务。一个典型的 WS 过程是:一个业务应用通过使用 HTTP 的 SOAP 协议向某个指定 URL 上的一 个服务发出请求,这个服务接受并且处理该请求后返回一个响应。一个经常被引 用的例子是股票报价服务,服务的请求是询问某股票的当前价格,服务的响应是 该股票的价格。这是最简单的 WS 例子,其请求几乎瞬间即可被满足,请求和响 应是同一个方法调用的不同组成部分。另外一个例子是指定货物高校配送线路的 服务。其中,商店发出的请求中包含递送的目的地,服务经过处理后确定成本最
2

简单对象访问协议 SOAP 原理及抓包分析

低的配送线路。返回响应的时间取决于线路的复杂程度,因此有可能发送和相应 的操作与请求分开进行。WS 和 WS 的消费者通常都是交易者,这使得 WS 的主流 是企业对企业(B2B)间的业务处理。一个企业有可能使某些 WS 的提供者,同时 又是其他 WS 的消费者。例如:对于一个香料批发企业,当他使用 WS 核对香草 豆是否有活的时候,其角色时 WS 的消费者;当他把不同卖主的价格提供给未来 消费者的时候,其角色又是 WS 的提供者。

2.2 WS 的体系结构
总的来说 Web Service 的体系结构由简单对象访问模型而来,把所有的应用实 体都抽象成服务,包括三个角色和三种基本此操作: 三个角色如下: 服务提供者(Service Provide) :从商务角度看,它是指服务的所有者,从体系 结构上来看,它是指提供服务的平台。 服务请求者(Service Requester) :从商务角度看,它是指需要请求特定功能的 企业,从体系结构看,它是指查找和调用服务的客户端应用程序。 服务代理( Service Broker ) 它是指用 来存 储服务描述信 息的信 息仓库 : (Repository) 。它负责为服务提供方发布服务,为服务请求方查找服务,并且将获 取服务的信息绑定给请求方。 三种基本操作如下: 发布(Publish) :服务提供者需要将服务进行一定的描述并发布到注册服务器 上。在发布操作中,服务提供者需要通过注册服务器的神恩验证才能对服务描述 信息进行发布和修改。 查找(Find) :服务请求方根据注册服务器提供的规范接口发出查询请求,从 而获取所需服务的相关信息。在查找操作中,一般有两种查找模式。一种是浏览 模式(Browse Pattern) ,及服务请求方可以根据通用的分类标准来浏览或者通过一 些关键词来搜索,逐步缩小查找的范围,直到找到满足需要的服务,其查找结果 是一系列服务的集合。另一种是直接获取模式(Drill Down Pattern) ,即通过惟一 的关键词直接得到特定服务的描述信息,其查找结果是唯一的。 绑定(Bind) :服务请求方通过分析从注册服务器中得到的服务绑定信息,例 如服务访问路径、服务调用的参数、返回结果、传输协议、安全要求等,对自己 的系统进行相应配置,进而可远程调用服务提供者所提供的服务。 对应上述三种操作,给出了三种标准如下: SOAP(Simple Object Access Protocol,简单对象访问协议) ,它实现的是低层 协议,定义了服务请求者和服务提供者之间的消息传输规范。SOAP 用 XML 描述
3

简单对象访问协议 SOAP 原理及抓包分析

信息,用 HTTP 承贷消息。SOAP 包括四部分:一是封皮,定义了描述消息和如何 处理消息的框架;二是表达应用程序定义的数据类型实例的编码规则(SOAP 编码 规则) ;三是 SOAP RPC 表示,定义远程过程调用和应答的协议;四是 SOAP 绑定 (Bind) ,定义法如何使用底层传输协议进行 SOAP 消息的交换。 WSDL Web Services Description Language, 服务描述语言)它是 Microsoft ( Web , 公司的 SDL(Services Description Language) 、IBM 公司的 NASSL (Network-Accessible Services Specification Language)合并后被 W3C 接纳所形成 的标准。WSDL 为服务提供者提供以 XML 格式描述 WS 请求的标准格式,将网络 服务描述为能够进行消息交换的通信端点的集合,以表达一个 WS 能做什么,它 的位置在哪里,如何调用它等。 UDDI(Universal Discover、 Description 、Integration 通用发现、描述、集成) 它是在原有 Microsoft 提供的 DISCO(Discription of Web Services) IBM 提出的。 和

2.3 Web 服务
Web 服务(Web Service)是基于 XML 和 HTTPS 的一种服务,其通信协议主 要基于 SOAP,服务的描述通过 WSDL,通过 UDDI 来发现和获得服务的元数据。 Web 服务是提供由 HTML 等语言描述的信息,Web 浏览器是为了将这些信息 提取出来在客户端运行的软件。互联网是 Web 服务器的集合体。 从表面上看,Web service 就是一个应用程序,它向外界暴露出一个能够通过 Web 进行调用的 API。这就是说,你能够用编程的方法通过 Web 来调用这个应用 程序。我们把调用这个 Web service 的应用程序叫做客户。例如,你想创建一个 Web service ,它的作用是返回当前的天气情况。那么你可已建立一个 ASP 页面, 它接受邮政编码作为查询字符串,然后返回一个由逗号隔开的字符串,包含了当 前的气温和天气。要调用这个 ASP 页面,客户端需要发送下面的这个 HTTP GET 请求: http://host.company.com/weather.asp?zipcode=20171 Web service 更精确的解释: Web services 是建立可互操作的分布式应用程序 的新平台。作为一个 Windows 程序员,你可能已经用 COM 或 DCOM 建立过基于 组件的分布式应用程序。COM 是一个非常好的组件技术,但是我们也很容易举出 COM 并不能满足要求的情况。 Web 的服务器软件成为 Web 服务器软件,这种为了通过 HTTP 进行交换的后 台程序也称为 HTTPd(HTTP daemon) 。如表 2-1

4

简单对象访问协议 SOAP 原理及抓包分析 表 2-1 Web 服务器软件

Web 服务器软件

运行环境

说明 是在 Windows 系列网络 OS 的 NT 或 2000 上运行 的 Web 服务器软件同 OS 捆绑在一起或者实地安 装提供 ASP 环境的服务 器有增加的倾向

IIS(Internet Information WindowsNT/2000 Serber Serber)

主要是 UNIX 系列的 OS 是 以 NCSA HTTPd 的 Apache ( 也 有 对 应 于 1.3 版本为基础,进行了 发布了的 Web 服务器软 件之一 WindowsNT/2000/98/Me) 各种各样的功能扩展而

5

简单对象访问协议 SOAP 原理及抓包分析

3 SOAP 协议

3.1 SOAP 协议
随着计算机技术的不断发展,现代企业面临的环境越来越复杂,其信息系统 大多数为多平台、多系统的复杂系统。这就要求今天的企业解决方案具有广泛的 兼容能力,可以支持不同的系统平台、数据格式和多种连接方式,要求在 Internet 环境下,实现系统是松散耦合的、跨平台的,与语言无关的,与特定接口无关的, 而且要提供对 Web 应用程序的可靠访问。 随着异种计算环境的不断增加,各种系统间的互操作性就愈显得必要,要求 系统能够无缝地进行通信和共享数据,从而在 Internet 环境下,消除巨大的信息 孤岛,实现信息共享、进行数据交换,达到信息的一致性。Web services 希望实现 不同的系统之间能够用"软件-软件对话"的方式相互调用,打破了软件应用、网站 和各种设备之间的格格不入的状态,实现"基于 WEB 无缝集成"的目标。 今年四月份的时候,W3C 联盟召开了第一次 Web 服务专题研讨会,目的为 探索 W3C 应向哪个方向发展才能实现新兴的 Web 服务架构的标准化,期间提 出了一个"Web 服务堆栈"的构想,如下图,从图中可以看出,SOAP 在 WEB 服务 堆栈中作为用于 XML 消息传递的一种非常普遍的协议, 发挥着十分重要的作用。

图 3-1 SOAP 在 WEB 服务堆栈中的作用

6

简单对象访问协议 SOAP 原理及抓包分析

3.2 SOAP 消息
1.第一个例子阐明了 SOAP 中一个简单的通信信息,包括了两个不是 SOAP 定义而是应用程序定义的元素:头块元素 alertcontrol 和体块元素 alert。头块元素 包括两个参数:priority 和 expires。体块元素包括的是实际传送的信息。

图 3-2 SOAP 中一个简单的通信信息

2.SOAP 通信与底层的不同协议和不同的交换格式有关,下面的例子 SOAP 使用 HTTP 作为底层通信协议,从而可以很好的使用 request/response 机制来传送 信息。 SOAP/HTTP 请求包括一个 GetLastTradePrice 的块元素,该请求携带一个 字符串参数和 ticker 符号,在 SOAP 应答中返回一个浮点数。XML 名域用来区分 SOAP 标志符和应用程序特定的标志符。

图 3-3 使用 HTTP 作为底通信协议

3. 例 3 展示的是 StockQuote SOAP 服务信息,是对例 2 的请求作出的一条应 答消息。
7

简单对象访问协议 SOAP 原理及抓包分析

图 3-4 对于请求作出的一条应答消息

3.3 SOAP=RPC+HTTP+XML
SOAP 简单的理解, 就是这样的一个开放协议 SOAP=RPC+HTTP+XML: 采用 HTTP 作为底层通讯协议;RPC 作为一致性的调用途径,XML 作为数据传送的格 式,允许服务提供者和服务客户经过防火墙在 INTERNET 进行通讯交互。RPC 的 描叙可能不大准确,因为 SOAP 一开始构思就是要实现平台与环境的无关性和独 立性,每一个通过网络的远程调用都可以通过 SOAP 封装起来,包括 DCE (Distributed Computing Environment ) CORBA CALLS, JAVA CALLS,etc。 SOAP 使用 HTTP 传送 XML,尽管 HTTP 不是有效率的通讯协议,而且 XML 还需要额外的文件解析(parse),两者使得交易的速度大大低于其它方案。 但是 XML 是一个开放、健全、有语义的讯息机制,而 HTTP 是一个广泛又能避 免许多关于防火墙的问题,从而使 SOAP 得到了广泛的应用。但是如果效率对你 来说很重要,那么你应该多考虑其它的方式,而不要用 SOAP。 为 了 更 好 的 理 解 SOAP, HTTP, XML 如 何 工 作 的 , 不 妨 先 考 虑 一 下 RPC CALLS,COM/DCOM CALLS,

COM/DCOM 的 运 行 机 制 , DCOM 处 理 网 络 协 议 的 低 层 次 的 细 节 问 题 , 如 PROXY/STUB 间的通讯,生命周期的管理,对象的标识。在客户端与服务器端进 行交互的时候,DCOM 采用 NDR(Network Data Representation)作为数据表示, 它是低层次的与平台无关的数据表现形式。 DCOM 是有效的,灵活的,但也是很复杂的。而 SOAP 的一个主要优点就在 于它的简单性,SOAP 使用 HTTP 作为网络通讯协议,接受和传送数据参数时采用 XML 作为数据格式,从而代替了 DCOM 中的 NDR 格式,SOAP 和 DCOM 执行

8

简单对象访问协议 SOAP 原理及抓包分析

过程是类似的,但是用 XML 取代 NDR 作为编码表现形式,提供了更高层次上的 抽象,与平台和环境无关。 客户端发送请求时, 不管客户端是什么平台的, 首先把请求转换成 XML 格式, SOAP 网关可自动执行这个转换。 为了保证传送时参数, 方法名, 返回值的唯一性, SOAP 协议使用了一个私有标记表, 从而服务端的 SOAP 网关可以正确的解析, 这 有点类似于 COM/DCOM 中的桩(STUB)。转化成 XML 格式后,SOAP 终端名 (远程调用方法名)及其他的一些协议标识信息被封装成 HTTP 请求,然后发送 给服务器。如果应用程序要求,服务器返回一个 HTTP 应答信息给客户端。与通 常对 HTML 页面的 HTTP GET 请求不同的是, 此请求设置了一些 HTTP HEADER, 标识着一个 SOAP 服务激发,和 HTTP 包一起传送。例如:对于一个询问股票价 格的应用程序, 服务器端具有组件提供某股票当前的价格, 组件是 COM 或 CORBA 在服务器上建立的。客户端发送一个 SOAP 请求给服务器询问股票价格。服务器 依赖于服务器上的 SOAP 网关, 使用内嵌的 HTML 对象调用合适的方法, 然后把 得到的价格通过 SOAP 应答传给客户端。

3.4 XML 和 HTML 的差异
XML 和 HTML 的不同可以归纳为 3 点: 1)XML 扩展性比 HTML 强 XML(Extensible Markup Languages)是扩展标记语言的英语缩写,他可 以创建个性化的标记语言,可以称之为元语言。XML 的标记语言可以自定义, 这样可以提供更多的数据操作,而不像 HTML 一样,只能局限于按一定的格 式在终端显示出来。HTML 的功能只有浏览器放入显示和打印,仅仅适合静 态网页的要求。 2)XML 的语法比 HTML 严格 由于 XML 的扩展性强,它需要稳定的基础规则来支持扩展。它的严格规 则为: 1、起始和结束的标签相匹配 2、嵌套标签不能相互嵌套 3、区分大小写 相对应 XML 的严格规则,HTML 语言并没有规定标签的绝对位置,也不 区分大小写,而这些全部由浏览器来完成识别和更正。 3)XML 与 HTML 互补 XML 可以获得应用之间的相应信息,提供终端的多项处理要求,也能被
9

简单对象访问协议 SOAP 原理及抓包分析

其他的解析器和工具所使用,在现阶段,XML 可以转化成相应的 HTML,来 适应当前浏览器的需求。 XML 工具 XML 如果有一个好的编辑器就能够减少很多麻烦

3.5 SOAP 的前景
W3C 于 2000 年 5 月 8 日发表了 Simple Object Access Protocol (SOAP) 1.1 版本, 具体规范发布在下列站点上( http://www.w3.org/TR/SOAP/)。又与今年 7 月 9 号 推出了 SOAP Version 1.2 版本的建议草案,具体规范发布在下列站点上 ( http://www.w3.org/TR/soap12/)。编写 SOAP Version 1.1 版本的工作小组的成 员包括: DevelopMentor, International Business Machines Corporation, Lotus Development Corporation, Microsoft, UserLand Software。 SOAP 的推出是令人兴奋的。可以相信,随着网络服务的的不断发展,它将极 大的改变我们的思考模式和开发模式。现在,已有许多大公司着手支持 SOAP 的 开发,去年 IBM 公司 和 Microsoft 公司 都发行了实现 SOAP 的第一批版本。 IBM 公司启动了 Apache SOAP 项目计划, 微软最近又推出了 SOAPtoolkit2.0 的正 式版,主要包括如下的一些特征:SOAP 的高层接口和低层接口,消息对象接口, 完全支持 WSDL 1.1 标准, 支持用户自定义类型映射,并且提供了丰富和完整的开 发文档以及应用实例。而且,两家公司正在互操作性方面努力研究。可以乐观的 估计,不用多久,SOAP 互操作性的时代就将来临。 与 SOAP 相关的一些标准: ? ? HTTP 1.0 or greater( http://www.w3.org/Protocols/HTTP/ietf-http-ext) the core W3C XML recommendation ( http://www.w3.org/TR/1998/REC-xml-19980210) ? W3C XML namespace recommendation ( http://www.w3.org/TR/REC-xml-names). ? XML Schema( http://www.w3.org/TR/xmlschema-1/)

10

简单对象访问协议 SOAP 原理及抓包分析

4 SOAP 协议结构

4.1 SOAP 协议简介
SOAP 以 XML 形式提供了一个简单、轻量的用于在分散或分布环境中交换结 构化和类型信息的机制。SOAP 本身并没有定义任何应用程序语义,如编程模型或 特定语义的实现;实际上它通过提供一个有标准组件的包模型和在模块中编码数 据的机制,定义了一个简单的表示应用程序语义的机制。这使 SOAP 能够被用于 从消息传递到 RPC 的各种系统。 简单对象访问协议(SOAP,Simple Object Access Protocol)是一种轻量的、 简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信 息。 SOAP 可以和现存的许多因特网协议和格式结合使用,包括超文本传输 协议 HTTP) 简单邮件传输协议 ( , (SMTP) 多用途网际邮件扩充协议 , (MIME) 。 它还支持从消息系统到远程过程调用(RPC)等大量的应用程序。 SOAP 包括三个部分: SOAP 封装:它定义了一个框架 , 该框架描述了消息中的内容是什么,谁 应当处理它以及它是可选的还是必须的。 SOAP 编码规则:它定义了一种序列化的机制,用于交换应用程序所定义 的数据类型的实例。 SOAP RPC 表示:它定义了用于表示远程过程调用和应答的协定。 虽然这三个部分都作为 SOAP 的一部分,作为一个整体定义的,但他们在功 能上是相交的、彼此独立的。特别的,信封和编码规则是被定义在不同的 XML 命 名空间(namespace)中,这样使得定义更加简单。 SOAP 消息基本上是从发送端到接收端的单向传输,但它们常常结合起来 执行类似于请求 / 应答的模式。所有的 SOAP 消息都使用 XML 编码。一条 SOAP 消息就是一个包含有一个必需的 SOAP 的封装包,一个可选的 SOAP 标头和一个必需的 SOAP 体块的 XML 文档。 把 SOAP 绑定到 HTTP 提供了同时利用 SOAP 的样式和分散的灵活性 的特点以及 HTTP 的丰富的特征库的优点。 HTTP 上传送 SOAP 并不是说 在 SOAP 会覆盖现有的 HTTP 语义,而是 HTTP 上的 SOAP 语义会自然的映 射到 HTTP 语义。在使用 HTTP 作为协议绑定的场合中, RPC 请求映射到 HTTP 请求上, RPC 应答映射到 HTTP 应答。 而 然而, RPC 上使用 SOAP 在
11

简单对象访问协议 SOAP 原理及抓包分析

并不仅限于 HTTP 协议绑定。 SOAP 也可以绑定到 TCP 和 UDP 协议上。

4.2 SOAP 协议结构及语法规则
4.2.1 协议结构 SOAP 消息格式: SOAP 标头
<SOAP-ENV: Envelope Attributes> <SOAP-ENV:Body Attributes> </SOAP-ENV:Body>

</SOAP-ENV:Envelope>目前主要在 web 服务中运用。 SOAPAction WEB 编码中常见,协议开始起始意思,常见于编码启始句。 4.2.2 语法规则 这里是一些重要的语法规则: ? ? ? ? SOAP 消息必须用 XML 来编码 SOAP 消息必须使用 SOAP Envelope 命名空间 SOAP 消息不能包含 DTD 引用 SOAP 消息不能包含 XML 处理指令

4.3 SOAP 消息的基本结构
<?xml version="1.0"?> <soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap-envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding"> <soap:Header> ... ... </soap:Header> <soap:Body>
12

简单对象访问协议 SOAP 原理及抓包分析

... ... <soap:Fault> ... ... </soap:Fault> </soap:Body> </soap:Envelope> SOAP 消息交换模型 SOAP 消息从发送方到接收方是单向传送,但正如上面显示的,SOAP 消息经 常以请求/应答的方式实现。SOAP 实现可以通过开发特定网络系统的特性来优化。 例如,HTTP 绑定使 SOAP 应答消息以 HTTP 应答的方式传输,并使用同一个连接 返回请求。 不管 SOAP 被绑定到哪个协议, SOAP 消息采用所谓的”消息路径“发送, 这使在终节点之外的中间节点可以处理消息。一个接收 SOAP 消息的 SOAP 应用 程序必须按顺序执行以下的动作来处理消息:识别应用程序想要的 SOAP 消息的 所有部分检验应用程序是否支持第一步中识别的消息中所有必需部分并处理它。 如果不支持,则丢弃消息。在不影响处理结果的情况下,处理器可能忽略第一步 中识别出的可选部分。如果这个 SOAP 应用程序不是这个消息的最终目的地,则 在转发消息之前删除第一步中识别出来的所有部分。为了正确处理一条消息或者 消息的一部分,SOAP 处理器需要理解:所用的交换方式(单向,请求/应答,多 路发送等等) ,这种方式下接收者的任务,RPC 机制(如果有的话)的使用,数据 的表现方法或编码,还有其它必需的语义。尽管属性(比如 SOAP encodingstyle, ) 可以用于描述一个消息的某些方面,但这个规范并不强制所有的接收方也必须有 同样的属性并取同样的属性值。举个例子,某一特定的应用可能知道一个元素表 示一条遵循约定的 RPC 请求,但是另外一些应用可能认为指向该元素的所有消息 都用单向传输,而不是类似请求应答模式。 (交互双方的 SOAP 消息并不一定要遵循同样的格式设定,而只需要以一种 双方可理解的格式交换信息就可以了)

13

简单对象访问协议 SOAP 原理及抓包分析

5 SOAP 协议的应用
简单对象访问协议(SOAP)提供对远程对象的访问。这些对象的示例是简单 的 JavaBeans 组件或是企业 JavaBeans 组件和 COM/COM+ 对象等。 这些对象驻 留在不同企业内部并且可能存在于因特网的任何位置。因此,SOAP 通过因特网 通信并且是一种在不同企业间交换信息的机制。怎样调用 SOAP 对象,怎样在有 SOAP 意识的应用程序间交换信息。

5.1 SOAP 和 WSDL
WSDL 描述了 Web 服务的接口。 Web 服务所有者将用 SOAP 来实现他们的接 口。因此,WSDL 服务实际上作为 SOAP 服务一样存在。一旦 Web 服务用户拥有 WSDL 文件,他或者她就知晓接口的细节。他或者她就会用 SOAP 来与 Web 服务 通信。 可以把 Web 服务考虑为对象, 可以通过 WSDL 接口公开并且使用 SOAP 通过 因特网远程访问。既然服务是对象,那么肯定有每种服务的相关属性和每种服务 调用的行为。SOAP 消息是 XML 文档,可通过 HTTP 工作。 5.1.1 为什么用 SOAP? B2B(Business-to-business)和 A2A(application-to-application )需求表明企 业之间为交换信息而相互通信。这种概念被用在 B2B、工作流和跨企业集成中。 例如,设想一条垂直供应链,在链上一家企业为了满足它的客户需求而需要调用 其提供者的服务。而一些提供者需要沿供应链进一步下行来调用其它企业的服务。 很明显,在此应用程序中互操作性是最为重要的。任何单个企业只能实现 SOAP 通信通道的一端。另一端将是因特网上 任何地方的实体。 在最近几年里,企业之间的集成和互操作性已经成为软件工程师和企业的一 个挑战性任务。平台相关性也成为取得集成和互操作性的一个大问题。SOAP 依然 是在企业间取得集成和互操作性最简单的机制。

5.2 SOAP 体系结构
有了对 SOAP 和它的用途的基本理解,我现在就展开对其体系结构的讨论以 了解一些深层知识。请参阅图 5-1, 在此图里面您可以识别典型 SOAP 通信体系 结构中的一些组件:

14

简单对象访问协议 SOAP 原理及抓包分析

? ? ?

SOAP 客户机 SOAP 服务器 实际服务

图 5-1 一个典型 SOAP 通信体系结构自建

解释上面所提到的每个实体的体系结构角色。下面的讨论参照 图 1。 5.2.1 SOAP 客户机 SOAP 客户机是一台有 SOAP 机制的机器,它可以产生 SOAP 请求并通过 HTTP 发送到服务器。一条 SOAP 请求是一种类型的 SOAP 消息,通常只有两 种类型的 SOAP 消息:一条 SOAP 请求就是一台 SOAP 客户机发送给 SOAP 服 务器的内容,一条 SOAP 响应就是 SOAP 服务器对 SOAP 客户机响应的内容。 清单 1 是典型的 SOAP 请求,请参阅 清单 2 来回顾 SOAP 响应。 清单 1:一条简单的 SOAP 请求 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:getListOfModels xmlns:m = "uri reference" > </m:getListOfModels> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 5.2.2 SOAP 服务器 SOAP 服务器也是一台有 SOAP 机制的机器,能够接收来自 SOAP 客户机 的请求,并对之作出适当的响应。这些编过码的响应会返回发出请求的 SOAP 客 户机。在 SOAP 服务器内部有三个实体:
15

简单对象访问协议 SOAP 原理及抓包分析

? ? ?

服务管理器 被部署服务的列表 XML 转换程序

服务管理器负责根据请求管理服务。请参阅 清单 1 的服务请求,在这里元 素 <m:getListOfModels xmlns:m="urn:MobilePhoneservice" > 包含了服务的名称。 服务管理器会读取 SOAP 客户机想调用的 SOAP 服务的名称并检查所需的服务 实际上是否驻留于这台 SOAP 服务器上。此后,它会查询被部署服务的列表 (SOAP 服务器所托管的所有服务的列表)。若存在,服务管理器将把 SOAP 请 求传送给 XML 转换程序。 XML 转换程序就负责将 SOAP 请求的 XML 结构转 换成程序员用来实现实际服务的编程语言(例如,Java 编程语言)的结构。还要 负责将来自实际服务的响应转换回 SOAP 响应的 XML 结构。请参阅 清单 2 获 得 SOAP 响应的说明。 清单 2:一条简单的 SOAP 响应 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <m:getListOfModelsResponse xmlns:m="urn:MobilePhoneservice"> <Model>M1</Model> <Model>M2</Model> <Model>M3</Model> </m:getPriceResponse> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 5.2.3 实际服务 服务实现可以是:例如,COM 组件或 JavaBeans 组件的形式。XML 转换程 序负责将 XML 结构转换成合适的方法调用。当 XML 转换程序调用了实际服务 实现的某个方法时,这个方法就会完成它的工作并且将结果信息返回 XML 转换 程序。

5.3 SOAP 请求响应机制
当 SOAP 客户机向 SOAP 服务器发送 SOAP 消息时, HTTP 协议传输。 用 这就叫做 SOAP 与 HTTP 绑定。当 SOAP 服务器收到消息时,将消息交给服务
16

简单对象访问协议 SOAP 原理及抓包分析

管理器。服务管理器检查被部署服务的列表,查找在 SOAP 消息中所需的服务。 若没有查找到所请求的服务,它将请求失败返回给 SOAP 客户机。但是若此项服 务可以提供,控制权由服务管理器转移给 XML 转换程序(转换程序完成合适语 言的转换并访问实际服务实现)。服务实现会处理请求并将结果返回给 XML 转 换程序。XML 转换程序将结果转换成 SOAP 客户机能够理解的 SOAP 响应 (XML 文档)。然后又一次用 HTTP 绑定来传输 SOAP 响应。现在让我们看一 下 SOAP 与 HTTP 的绑定细节。 5.3.1 SOAP 与 HTTP 绑定 当您将 SOAP 和 HTTP 绑定在一起或在 HTTP 上操作 SOAP 时,您实际 上将 HTTP 报头加到了 SOAP 请求和响应上了。 清单 1 是典型 SOAP 请求的 结构, 而清单 3、 4、 5 和 6 都是完整的 HTTP 请求, 用来演示如何将 HTTP 报 头添加到 清单 1 上。 相似地, 清单 7 是一条完整的 HTTP 响应, 针对于来自 清 单 2 的 SOAP 响应。 无论您何时在 HTTP 上使用 SOAP,Content-Type 字段必须是 text/xml。现 在您可以察看 清单 3 到 清单 7 的详情。 5.3.2 使用 HTTP 的 SOAP 请求 您可以将 SOAP 和 HTTP 的 POST 请求方法连用。为了发送一条 SOAP HTTP 请 求 , 您 需 要 在 HTTP 中 提 供 一 个 SOAPAction 报头字段。 SOAPAction 指定了 SOAP 请求的目的。服务器(例如过滤 HTTP 中 SOAP 请 求消息的防火墙)可以用字段 SOAPAction 的值来做决定。 HTTP 客 户 机 在 发 送 一 条 SOAP HTTP 请 求 时 必 须 用 此 报 头 字 段 。 SOAPAction 可以有如下几种值: ? ? ? ? SOAPAction:"URI-Reference" SOAPAction:"filename" SOAPAction:"" SOAPAction: 清单 3:演示 SOAPAction 报头字段中的 URI 引用 POST /Vendors HTTP/1.1 Host: www.mobilephoneservice.com Content-Type:"text/xml";Charset="utf-8" Content-Length: nnnn

17

简单对象访问协议 SOAP 原理及抓包分析

SOAPACtion:"www.mobilephoneservice.com/Vendors/MobilePhoneservice#getList OfModels" <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:getListOfModels xmlns:m="urn:MobilePhoneservice" > </m:getListOfModels> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 清单 3 在 SOAPAction 中包括如下 URI 引用: www.mobilephoneservice.com/Vendors/MobilePhoneservice#getListOfModels 这个 SOAP Action 展示了两部分内容。第一部分是一个特别 SOAP 部署的 地址: www.mobilephoneservice.com/Vendors/MobilePhoneservice 第二部分是一个片段标识符,它给出了我们感兴趣的方法的名字 (#getListOfModels)。 清单 4:演示 SOAPAction 报头字段中的一个文件名 POST /Vendors HTTP/1.1 Host: www.mobilephoneservice.com Content-Type:"text/xml";Charset="utf-8" Content-Length: nnnn SOAPAction:"MobilePhoneservice#getListOfModels" <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:getListOfModels xmlns:m="urn:MobilePhoneservice" > </m:getListOfModels> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 清单 4 在 SOAPAction 中包含一个文件名 ( MobilePhoneservice#getListOfModels )。MobilePhoneservice 文件必须出
18

简单对象访问协议 SOAP 原理及抓包分析

现在主机 URI( www.mobilephoneservice.com/Vendors )中。 这个主机 URI 是 在 HTTP 报头中 host 字段( www.mobilephoneservice.com )和文件夹名 ( /Vendors )的结合。 清单 5:演示 SOAPAction 报头中的空字符串 POST /Vendors HTTP/1.1 Host: www.mobilephoneservice.com Content-Type:"text/xml";Charset="utf-8" Content-Length: nnnn SOAPAction:"" <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:getListOfModels xmlns:m="urn:MobilePhoneservice" > </m:getListOfModels> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 清单 5 在 SOAPAction 中包含一个空字符串("")。空字符串值表明 SOAP 的目的和 Host URI( www.mobilephoneservice.com/Vendors )的目的是一样的。 清单 6:演示无值 SOAPAction 报头 POST /Vendors HTTP/1.1 Host: www.mobilephoneservice.com Content-Type:"text/xml";Charset="utf-8" Content-Length: nnnn SOAPAction: <?xml version="1.0"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:getListOfModels xmlns:m ="urn:MobilePhoneservice" > </m:getListOfModels> </SOAP-ENV:Body> </SOAP-ENV:Envelope>
19

简单对象访问协议 SOAP 原理及抓包分析

清单 6 没有包含 SOAPAction 值。这表明没有关于消息目的的信息。 用 HTTP 的 SOAP 响应,响应将可能是两种类型的 SOAP 响应中的一种: 一个成功的 SOAP 操作产生 SOAP 结果 一个不成功的 SOAP 操作产生一条 SOAP 错误消息 清单 7:一条带有 HTTP 报头的成功 SOAP 响应 HTTP/1.1 Content-Type:"text/xml"; Charset="utf-8" Content-Length: nnnn <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" > <SOAP-ENV:Body> <m:getListOfModelsResponse xmlns:m = "URI-Reference"> <model>m1</model> <model>m2</model> </m:getListOfModels> </SOAP-ENV:Body>

5.4 SOAP 模式与实现
5.4.1 SOAP 消息 一条 SOAP 消息只是一个 XML 文档,由一个强制性的 SOAP Envelope 组 成,SOAP Envelope 有一个可选的 SOAP Header 和一个必须有的 SOAP Body。 5.4.2 SOAP 模式的元素
? ? ? ? Envelope Header Body Fault

a. Envelope: Envelope 是表示一条 SOAP 消息的顶层元素。为了发送一条 SOAP 消息, 必 须 包 括 此 元 素 。 Envelope 使 用 必 要 的 SOAP 名 称 空 间 标 识 符 ( http://schemas.xmlsoap.org/soap/envelope/ ) 。若 Envelope 包含了错误的名称空 间, 会产生一个关于 Envelope 名称空间版本的错误。 清单 8 是一个空 Envelope。 称其为“空 Envelope”是为了强调在通过“投递”发出它之前,它最终应该包含一封 “信” (也许是商业信) 。SOAP 模式中的“信”就是指“SOAP Body”,HTTP POST (在
20

简单对象访问协议 SOAP 原理及抓包分析

HTTP 与 SOAP 的绑定一部分讨论过)就是传输机制。 清单 8:一个空 SOAP Envelope <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> </SOAP-ENV:Envelope> b. Header: SOAP Header 是可选的。 您可以直接将 SOAP Body 放到 SOAP Envelope 中 并完全忽略报头。报头提供了一个扩展 SOAP 消息功能的机制。例如,认证就是 由 SOAP Header 条目所提供的一种典型扩展。在此情况下,将有一个认证框架, 它会使用 SOAP 作为更低级别的传输。 请参阅 清单 9 来查看在 SOAP 中的报头 实现。 清单 9:在一个 SOAP Envelope 中的报头实现 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <m:Order xmlns:m="some URI" SOAP-ENV:mustUnderstand="1"> </m:Order> </SOAP-ENV:Header> </SOAP-ENV:Envelope> c. Body: Body 元素包含您实际要发送的消息。 它是一个强制性的元素且其子元素通常 属于一个用户定义的名称空间。 清单 10 展示了一条引用一个用户定义的名称空 间 “u” 的 SOAP 消息。 Body 元素是必要信息的容器。 这个元素必须在 SOAP 消 息中出现并且必须是 SOAP Envelope 元素的一个直接子元素。它也必须直接跟在 SOAP Header 元素的后面。若没有 Header 元素,那么它应直接跟在 Envelope 元 素的后面。主体可以包含子元素并且子元素可能是受限于名称空间的。 清单 10: SOAP Envelope 内有 Header,还有 Body <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <m:Order xmlns:m="some URI" SOAP-ENV:mustUnderstand="1"> </m:Order>
21

简单对象访问协议 SOAP 原理及抓包分析

</SOAP-ENV:Header> <SOAP-ENV:Body> <u:GetPrice xmlns:u="some URI" > <model>m1</model> </u:GetPrice> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

d. Fault: 这个元素表明一条错误消息。它应作为一个主体条目出现并且不能在 Body 元素中出现一次以上。通常,Fault 元素会在一条 SOAP 响应消息中出现,以表 明在 SOAP 请求中出现错误。 Fault 的子元素: ? faultcode (错误的标识) ? faultstring (错误的描述) ? faultactor (标识由谁导致的错误) ? detail (错误细节。通常是一个应用程序特定错误,也就是说,它相当 于在 SOAP 请求主体中用到地用户定义的名称空间) 清单 11: 当应用程序出现错误时,SOAP Fault 的使用 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header> <m:Order xmlns:m="some URI" SOAP-ENV:mustUnderstand="1"> </m:Order> </SOAP-ENV:Header> <SOAP-ENV:Body> <SOAP-ENV:Fault> <faultcode>SOAP-ENV:Server</faultcode> <faultstring>Not necessary information</faultstring> <detail> <d:faultdetail xmlns:d = "uri-referrence">
22

简单对象访问协议 SOAP 原理及抓包分析

<msg> application is not responding properly. </msg> <errorcode>12</errorcode> </d:faultdetail> </detail> </SOAP-ENV:Fault> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 5.4.3 对 WSDL 文件的 SOAP 请求 已经解释 SOAP 消息(请求和响应)的常规语法,如何对 MobilePhoneservice 开发一条 SOAP 请求。设计一个完整的 WSDL 接口来解释 MobilPhoneservice。 移动公司在 MobilePhoneservice 中提供了两种方法,一种是 getListOfModels() , 另一种是 getPrice(modelNumber) 。 GetListOfModels() 没有参数但是返回手机型 号的一张列表,而 getPrice(modelNumber) 有一个参数 modelNumber 并返回需求 型号的 price 。用 SOAP 请求格式对它作成文档,但是首先让给出一般的 SOAP 请求和响应格式。 清单 12:SOAP 请求的一般格式 <SOAP-ENV:Envelope xmlns:SOAP-ENV ="SOAP schema's URI" <SOAP-ENV:Body> <Instance:"Method Name" xmlns:Instance= "URI where method is located"> <parameter1>value</parameter1> <parametern>value</parametern> </Instance:"Method Name"> </SOAP_Envelop:Body> </SOAP-ENV:Envelope> 一条简单的 SOAP 请求或响应只能表明一种服务的一个方法。包含一条 SOAP 请求的 Envelope 的一般格式遵从 清单 12。将这种一般格式与 清单 16 中的 getListOfModels() 的方法调用请求比较。 清单 13:一条 SOAP 响应的一般格式

23

简单对象访问协议 SOAP 原理及抓包分析

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <Instance:"Method Name"+"Response" xmlns:Instance="URI where method is located"> <return> <responseparameter1>value</responseparameter1> <responseparametern>value</responseparametern> </return> </Instance: "Method Name"+"Response"> </SOAP-ENV:Body> </SOAP-ENV:Envelope> 清单 13 是一条一般的 SOAP 响应。 Apache SOAP 服务器在方法名称的后面 增加了"Response"关键字并将返回值封入元素 <return> 中作为一个直接子方法元 素。若返回值是复合型结构,那么 <return> 元素包含一个或多个 <item> 元素。 清单 14:调用 getListOfModels() 方法的 SOAP 请求 <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Body> <m:getListOfModels xmlns:m = "www.mobilphoneservice.com" > </m:getListOfModels> </SOAP-ENV:Body> </SOAP-ENV:Envelope>

24

简单对象访问协议 SOAP 原理及抓包分析

6 SOAP 抓包分析实验
首先需要下载 Tomcat 服务器、 Apache SOAP 工具包和 Apache Xerces XML 分 析器。还必须安装 java 虚拟机作为 java SDK 安装的一部分。 ? j2sdk-..... ? jakarta-tomcat-..... ? soap-bin-..... ? Xerces-J-bin..... 还需要下载下列 JAR 文件: ? servlet.jar ? mail.jar ? activation.jar 在下载和安装了所需要的工具和文件后,下一步就是设置环境变量。 JAVA_HOME=C:\jdk...... TOMCAT_HOME=C:\jakarta-tomcat-..

将路径变量(path)设置成指向 java 安装的 bin 文件夹和 Tomcat 安装的 bin 文件 夹。将 classpath 设置为包括 xercesImpl.jar、xercesSamples.jar、xmlParserAPIs.jar、 soap.jar、servlet.jar、mail.jar 和 activation.jar。 在 jakarta-tomcat\conf\server.xml 配置文件中增加一个新的<Context>标记, <Context path="/soap" docBase="C:\soap-2_3_1\webapps\soap"debug="1" reloadable="true"> </Context> (启动和终止 tomcat:从命令终端进入 tomcat 安装的 bin 目录下,用 startup 和 shutdown 来启动和终止)xercesImpl.jar、xercesSamples.jar 和 xmlParserAPIs.jar 文件在 Xerces 安装目录下。可以在 Apache SOAP 工具包安装的 lib 文件夹中找到 soap.jar。 (必须将 xercesImpl.jar 设置在 CLASSPATH 的任何 JAR 文件前。 )将 C:\soap-2_3_1\webapps 下的 soap.war 放在 tomcat\webapps\下。如果程序和发布没 有错误的话,就把服务的*.class 放在 common\class 下,如果是*.jar 就放在 common\lib 下。另外要把 xerces.jar 和 soap.jar 拷贝到 tomcat\common\lib 下面。最 后测试是否配置成功,http://localhost:8080/soap。 查看 SOAP 消息: 新建一个名为 TCPMonitor 的 java 工程,导入 axis 用户库,新建一个 TCPMonitor.java 如图 6-1 所示。

25

简单对象访问协议 SOAP 原理及抓包分析

图 6-1 新建工程

运行后出现如下界面,如图 6-2

图 6-2 运行界面 1

点击 add 如图 6-3

图 6-3 点击 add 后界面

26

简单对象访问协议 SOAP 原理及抓包分析

修改 StubClient.java 如图 6-4

图 6-4 修改 StubClient.java

需要告诉客户端监听端口是 1234,做如下处理: 点击 run...,java 应用程序下选择 DIIClient,在右边的 Arguments 标签下 VM Arguments 框中输入-Dhttp.proxyHost=localhost -Dhttp.proxyPort=1234,运行即可看 到 TCPMonitor 中的 SOAP 信息 如图 6-5

图 6-5 抓到 SOAP 包

27

简单对象访问协议 SOAP 原理及抓包分析

在抓到 SOAP 的过程中需求 TOMCAT 作为中介。如图 6-6

图 6-6 中介 TOMCAT 的运行

28

简单对象访问协议 SOAP 原理及抓包分析

7 结论
SOAP 协议的原理及抓包分析是基于 WSDL 的,我们通过了解 WSDL 以及 Apache SOAP 客户机和 Apache SOAP 服务器的工作方式,流程来更进一步的接 触 SOAP 协议在网络中如何发挥作用,控制消息的流通 在这一部分中,我们已经学习了 SOAP 语法、请求、响应、HTTP 绑定的 SOAP 使用。也了解了服务于 Apache SOAP 客户机和 Apache SOAP 服务器。 基于 SOAP 的 Web 服务通过 Internet 协议和 XML 格式的 SOAP 来实现网络 服务的访问,具有跨平台、跨语言的优点,但是没有任何技术可以解决一切问题, SOAP 技术也不例外,它不会取代其他分布式计算机技术(例如 RMI、CORBA 及 DCOM) 。当前,Web 服务的若干技术 SOAP、WSDL 以及 UDDI 都在不断发展和 完善中,基于 SOAP 的 Web 服务技术必将在应用系统整合方面发挥越来越重要的 作用。

29

简单对象访问协议 SOAP 原理及抓包分析

致谢
首先要感谢陈彦萍老师,是她在整个毕业设计过程中给我提供了毕业设计所 需要的资料,帮助解答毕业设计中遇到的问题。其次要感谢网络实验室的老师们, 是他们毕业设计中为我准备好了毕业设计的工作环境,再次是要感谢和我一起做 毕业设计的同学们,正是有了他们,我们才在遇到问题时,相互鼓励,最终解决 了问题,圆满地完成了毕业设计的各项工作。

30

简单对象访问协议 SOAP 原理及抓包分析

参考文献

[1] 蔡月茹、柳西铃.Web Service 基础教程[M].北京:清华大学出版社,2005.3~186 [2] 雍俊海.Java 程序设计[M].北京:清华大学出版社,2004.70~138 [3] http://www.fish888.com/Apache-SOAP-SOAP-t120444 [4] http://askcuix.javaeye.com/blog/211005 [5] http://www.javaeye.com/topic/345964 [6] http://middleware.csdn.net/page/41e44fe4-bfe5-4851-90f4-d8021d718fc9 [7] http://baike.baidu.com/view/63.htm?fr=ala0_1_1

31


相关文章:
SOAP协议分析
SOAP协议分析_计算机软件及应用_IT/计算机_专业资料。SOAP协议分析SOAP 协议分析 西安邮电大学 Web 服务 课内实验报告书 院系名称 : 计算机学院 实验题目 : SOAP ...
SOAP(Simple Object Access Protocol,简单对象访问协议)是基于
[解析] 本题考查SOAP的基本概念。简单对象访问协议(SOAP)是在分散或分布式的环境中交换信息的简单协议,是一个基于XML的协议,它包括四个部分。 (1)SOAP封装(env...
...Object Access Protocol,简单对象访问协议)是基于__...
SOAP(Simple Object Access Protocol,简单对象访问协议)是基于___的分布式对象通信协议。 A.CSSB.DHTMLC.HTMLD.XML_答案解析_2016年_一模/二模/三模/联考_...
A.简单对象访问协议B.超文本传输协议C.统一注册与发现...
C.统一注册与发现协议D.远程对象访问协议正确答案及相关解析 正确答案 A 解析 [分析] 在Web Services中,客户与服务之间的标准通信协议是简单对象访问协议(SOAP)...
简单对象协议(SOAP)简介
简单对象协议( 简单对象协议(SOAP)简介 ) "SOAP 是在非集中、分布环境中交换信息的轻量级协议。它是基于 XML 的协议,包括三个部 分: 封套(envelope)定义了消息...
使用WSDL发布WebService(第二部分)简单对象访问协议—...
使用WSDL 发布 WebService(第二部分)简单对象访问协议——学习 SOAP 语法和使用 SOAP 发布 WSDL 简 单对象访问协议(SOAP)提供了访问远程对象的方法。这样的对象有...
SOAP协议
SOAP协议_计算机软件及应用_IT/计算机_专业资料。SOAP 协议 网络通信 规范SOAP SOAP:简单对象访问协议,简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的...
soap协议
soap协议_IT/计算机_专业资料。soap协议资料概述SOAP: 简单对象访问协议, 简单对象访问协议 (SOAP) 是一种轻量的、 简单的、 基于 XML 的 协议,它被设计成在 ...
Web Services的基本原理
Web Services 的基本原理 Web Services 是通过一系列标准和协议来保证程序之间的...SOAP 指简易对象访问协议 SOAP 是一种通信协议 SOAP 用于应用程序之间的通信 ...
SOAP协议
简单对象访问协议(SOAP)是一种轻量的、简单的、基于 XML 的协议,它被设计成在 WEB 上交换结构化的和固化的信息。简单对象访问协议(SOAP)是一种轻量的、简单的...
更多相关标签:
soap协议抓包工具 | 协议分析抓包简单代码 | 简单对象访问协议 | soap抓包工具 | soap 抓包 | soap协议 | soap协议和http协议 | soap协议详解 |