OA自动化SOAP协议语法拾零_第1页
OA自动化SOAP协议语法拾零_第2页
OA自动化SOAP协议语法拾零_第3页
OA自动化SOAP协议语法拾零_第4页
OA自动化SOAP协议语法拾零_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、SOAP协议语法拾零现在用JavaScript, HTML和Perl CGI这样的 Web技术来解决简易目标访问协议( SOAP)通信原则是可以的。SOAP通信明显的不足在于这些方法没有适当的SOAP句法结构一一所以这些是不标准的解决方案。SOAP 是 XML 和 HTTPSOAP信息是无格式的老版本 XML文件。XML提供了一种句法结构,这种句法结构能让你使用各种不同的标示。代替了<html>标签,SOAP规则描述了一种envelope标签。为了获得 SOAP请求,三套标签是必需的。既然标签都是配套组合的,就要在一个文档中去连接它们。这个文档就是SOAP通信。最后,通信必须被发送

2、到某个地方。当然,你发送的并不是一个信息,而是一对信息:一套请求一一应答信息。其中一个是发出情处理数据”的消息,而另一个时发出 提交我所做的处理”的消息。SOAP规则用HTTP来实现请求一一应答通信一一发送SOAP数据的过程在登陆 Web页上和发送一个表格已经没有什么区别 了。稍后,我将要检测怎样利用 HTTP在Web浏览器(也可以说成请求客户端)和 Web服务器(也可以说成是响应服务器 端)之间影响发送到Internet上的内容。首先,我们来进一步研究一下 SOAP的处理过程。SOAP处理样本在早期的SOAP icebreaker article中,有三条内容要发送到服务器中:姓名,年龄和头

3、发的颜色。一条信息被发送回来:通过 一句话对这个在表单中的人进行描述。让我们看看下面的例子:一个人:姓名(Jone Doe),年龄(21),头发的颜色(棕色)。用一句话描述成:Jone Doe是一个深色头发的年轻人。可以看出非常容易。现在再写一个XML的简单例子分别是发送 xml和接受xml:发送xml:person<name>John Doe</name><age>21</age><color>Brown</color></person>接受xml:<description>John Doe is

4、 a young brunette</description>除了在句法中作一些小心的修订之外,SOAP通信在双方都是完整的。正是在语法结构上的规范的正式性才掩饰了SOAP简易朴素的一面。你需要整理(读:把所有的无用的东西放进)这些 SOAP信息。推敲请求响应信息整体构造信息的主要问题在于,所有的句法结构来自一个非常局限的领域。这些信息并没有被任何暗示说明这些信息是XML ,而且当然也没有指明一些标签来说明。那么我们用下面的方法来改进发送的xml信息:<?xml version="1.0" ?><p:person xmlns:p="h

5、ttp:.au/2002/person"><p:name>John Doe</p:name><p:age>21</p:age><p:color>Brown</p:color></p:person>利用xml姓名域(xmlns),我已经把所有的标识符都属于字母"P;这代表了 " .au/2002/person o如果信息的发送者和接收者都理解所写的意义,那么这条消息就是有意义的。但是这些标识符的简化含义到底来源于哪里呢?标识符的简化含义被另一个XML文件说明。该文件都是来源于

6、XSchemastandard中的标识符。X系统标准是表述新标识符的一种方法,例如象 <person>。既然我创建了 <person>标识符,那么我就拥有了一个X系统文件,该文件定义了象<person>这样的标识符所代表的具体含义。这非常容易明了,但是在所有的X系统文件的最后(习惯上是这样的)都附有 .xsd文件,而不是.xml文件,.xsd的范围从规则提出的最开始一直 到规则结束。因此 .au/2002/person是一个person的.xsd文件,实质上这个文件只是一个XML文件。它看起来就像 ListA。程序员建立了 XML文件。这个文件又涉及到另外一

7、个XML文件,一个在 “/2001/XMLSchema.上的文件。这个文件用标准主体来编写,因此除了每次用该文件来处理一些象person.xsd这样的文件外,他就没什么其它 用处了。X系统定义了第二套必要的标识符。<element>标识符是最重要的。在我的模型中 Person.xsd文件用两个<element>标识符去定义"3"。2和description标识符。在这个系统文件中有一个非常细节化的过程,但是要指出的这一点很重要,就是所有 的信息标识符都是被定义的,所有的标识符都有类型。例如,<age>标识符

8、是类型为type=" positiveinteger”这表示它只能在<person>标识符中出现。数据类型非常重要,因为SOAP通信通常要传递数据而不是传递格式自由的文本。甚至简单的响应消息(<description> ),这是一个格式自由的文本,它都要被一串被定义的字符串所取代。把请求放入SOAP封装创建一个SOAP消息一个写信和发信的过程。既然你创建了一个 SOAP消息,就要把它放到一个 SOAP封装中并在前面注明 指令。下面是一个 SOAP封装的例子:<Envelope><Header> . </Header><

9、Body> . </Body></Envelope>程序中的图形(三个点)表示要发送的文件在哪里,它要发送到哪里去。当然了,一条XML跟最初的send.xml一样具有滞后性,所以要一点一点清理语法结构:<?xml version="1.0" ?><env:Envelope xmlns:env='/2001/12/soap-envelope'><env:Header></env:Header><env:Body></env:Body&

10、gt;</env:Envelope>这是你所需要的第三套标识符。 <Envelope>,<Header> n<Body>标识符(严格的语法格式)者B会被 SOAP标准列入清单- 其中SOAP标准把这几条封装描述成围绕在 SOAP周围的数据,即使封装在技术上和数据分开, 实际上你还是会试图发送的。 这整个的过程就叫做 “SOAP通信”。现在让我们消息放到封装中,如url=#bList B/url所示。三个"xmlns” XML勺名称域声明了三个简化的标识符,用来通信:两个如上面所示(一个已经被再三重复了),一个在person.xsd文件中

11、。但是<p:control>标识符到底是什么呢?你可以利用SOAP文体的开头把数据放到封装中。SOAP的必须理解”属性就是<p:control>标识符对信息的接收者指出,信息必须被整体处理否则将完全失败。<control>标识符是一个新创建的标识符,它就是用来实现上述属性的。把<control>加入到person.xsd系统中,如下面所示:<schema:element name="control"><schema:complexType></schema:complexType></

12、schema:element>这里有一个 X系统的小窍门,从一些内容中提出的<control>标识符在HTML中可以归并成一个<hr>类。现在SOAP通信才是完整的,如果你对另外的通信进行全面的处理,请你参看ListC.剩下来要做得的就是发送这两条信息。把SOAP消息连接到HTTPHTTP是SOAP消息反复发送的结果。 他好比一个邮递员手里拿着 SOAP信封去目的地一样。 如果你想从象 Perl,Java,C这样 的程序语言中发送 SOAP信息,而它们中又没有浏览器,你就需要了解HTTP报头来实现请求了。下面是你最后用来发送.xml 所需要做的:POST /tra

13、nsactions/AnalysePerson HTTP/1.1Host: .auContent-Type: application/soap; charset="utf-8"SOAPAction: ".au/transactions/AnalysePerson"Content-Length: 447SOAPAtion报头是具有随意性的并且有几分欺诈性。他告诉接受系统在没有请求接受端去浏览其内部的情况下怎样去处理引入信息并且对端内容是SOAP内容。如果一个SOAP服务器即将被使用, 你只需要判断当报头被提交的时候服务器,是否把这些提交都加载上去了。当然,

14、SOAP通信将这样开始recv.xml报头:message will start:HTTP/1.1 200 OKContent-Type: application/soap; charset="utf-8"Content-Length: 406这是因为recv.xml信息在一个HTTP响应中被返回,以便和发送HTTP请求相匹配。SOAP通信能够被排列组合并且可以被现代的浏览器发送,所以你可能会期待HTTP报头清单更大一点。从浏览器角度看,无论什么报头,都要是完整的,真实的,完全适应象ListD这样客户的SOAP请求。给封装加密SOAP是一个在程序之间传递信息的系统,而且代码

15、是非常简单易懂的。只要你记住中心的任务是定义加在你所发送的数据之间的结构标识符,剩下的要做的就是象装饰圣诞树那样进行尝试性的加载了。不要被这所困扰。如果你对你的SOAP工作有绝对的信心,那么通过学习SOAPand XSchema standards你一定会做的最好!List A<?xml version="1.0"?><schema:schema xmlns:schema="/2001/XMLSchema "><schema:element name="person">

16、;<schema:complexType><schema:sequence><schema:element name="name" type="schema:string" /><schema:element name="age" type="schema:positiveInteger" /><schema:element name="color" type="schema:string" /> </sche

17、ma:sequence></schema:complexType></schema:element><schema:element name="description" type="schema:string" /></schema:schema>List B<?xml version="1.0" ?><env:Envelope xmlns:env='http:/2001/12/soap-envelope'><env

18、:Header><p:control xmlns:p='http:.au/2002/person' env:mustUnderstand='1' /></env:Header><env:Body><p:person xmlns:p="http:.au/2002/person"><p:name>John Doe</p:name><p:age>21</p:age><p:color>Brown</p:color></p

19、:person></env:Body></env:Envelope>List C<?xml version="1.0" ?><env:Envelope xmlns:env='/2001/12/soap-envelope'><env:Header><p:control xmlns:p='http:.au/2002/person' env:mustUnderstand='1' /></env:Header>&l

20、t;env:Body><p:description xmlns:p="http:.au/2002/person">John Doe is a young brunette</p:description></env:Body></env:Envelope>List DPOST /transactions/AnalysePerson HTTP/1.1User-Agent: Mozilla/5.0 ( Windows ; U; Win98; en-US; rv:0.9.9) Gecko/20020311Accept: text/xml,application/xml,application/xhtml xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1Accept-Language: en-us, en;q=0.50Accept-Encoding: gzip, deflate, compress;q=0.9Accept-Charset: ISO-8859-1, utf-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论