用Msxml2进行异步信息交换的探讨
扫描二维码
随时随地手机看文章
摘要:随着Web技术的发展,越来越多的信息需要通过异步Web传输来获取,提出一种基于Msxml2的异步信息搜索方法,通过采集Web侦听页,分析XML信息结构,达到信息传送的目的。
关键词:Msxml2;request;ActiveXObject;侦听页
1 引言
XmlHttp2.0提供客户端同http服务器异步通讯协议,客户端可通过Msxml2对象向Web服务器发送请求并使用文档对象模型DOM处理同应,且所有通讯都可在后台进行,扩展了Web的信息处理能力。
2 Msxml2对象特色技术
Msxml2(或XmlHttp)对象属于ActiveX,使用Msxml2.XmlHttp方式创建,可注册一个函数给XmlHttp对象的on-readystatechange方法,该对象的open方法可发出Http请求,对象的Send方法可自动调用所注册的函数。
2.1 使用XmlHttp抓取目标地址的Web页面
页面分析的GetBody函数通过XmlHttp组件可后台获取目标地址Web页的内容,这种方式获得的Web页面结构可被应用系统后台分析。
2.2 字符转换
后台获取的Web数据往往有乱码现象,可以使用Adodb.Stream对其进行二进制处理,SaveToFile(FileName)方法可将数据存入文件;Object.LoadFromFile(FileName)方法可以从文件中读取数据;Object.Write(Data,[Options])将指定的文本数据装入对象中;Object.ReadText(NumChars)读取指定长度的文本及参数说明:NumChars指定要读取的字符串长度,未指定则读取全部数据。
2.3 后台页面保存
后台网页的内容可以作为Msxml2.XmlHttp对象的Re-sponse属性返回,意味着可以使用FileSystem对象将页面的内容保存到文件中,例如:
保存后文档的格式可能与网页的格式不同,这取决于所使用样式表的格式。多数情况下,即使格式有点缺漏,页面也可按文本方式读取。
2.4 跨域访问
跨域访问就是A网站的JavaScript代码试图访问B网站,包括提交内容和获取内容。由于安全原因,直接跨域访问是被浏览器所禁止的,可以使用StreamReader对象后台获取。
3 XML信息控制
IE客户端可通过JavaSeript命令将XML命令控制文件通过后台发送给Web侦听页,并获得信息反馈。逻辑过程是:(JS)应用->侦听页->ActiveX控件,ActiveX控件->侦听页->客户端(JS)接收,如图1所示。
IE客户端发出“XML命令”的JavaScript命令典型过程:
在IE客户端,可以不用XML格式命令而使用普通文件构造指令,但使用XML格式容易解析指令及其参数,例如“Open”函数的“Xml_receive.asp”网页被称为侦听页;第3个参数决定是否异步执行;还可以再加上用户名和口令两个参数,此时要求进行同步查询,即IE窗口在完成查询前只进行等待。
3.1 侦听页基本功能
IE客户页面提交查询时,通过“侦听页”发出XML格式指令。由XmlHttp向WWW服务器请求交互,Web服务器即解释该命令,并调用相应ActiveX控件,以XML字符串形式将查询结果返回给IE端用户。侦听页执行的基本过程:
(1)将查询请求加载到XML DOM,并对指令及其参数进行解析。支持Java,Script的所有浏览器都支持文档对象模型(DOM)。DOM涉及W3C标准文档的对象模型,以树形结构表示HTML和XML文档,可以定义遍历、检查和修改树节点的方法和属性,如图2所示。使用DOM技术可以解析XML文件中的查询指令和参数(parameter),可以有多个参数。
(2)根据客户要求,调用Active X控件的处理方法,执行结果用XML字符串表示。创建Active X对象并调用预定的GetTitlesXML()方法,返回Pubs数据库的查询结果,结果用XML字符串方式返回。
(3)将返回结果加载到XML DOM并用Response对象返回给IE用户。Response对象可将结果反馈给IE用户。具体方法是使用XML DOM的Save方法返回结果。例如,下面的程序片段中,反馈信息为XML串:resuhsXML,它通过Response对象设置输出流格式。
3.2 XML信息接收
IE客户端一旦接收到返回结果,就将其加载到XMLDOM,并使用XML解析方式分析信息,以获得相应的信息。先将XmlHttp的ResponseXML信息加载到XML DOM对象中。如果出错,可以分析“侦听页”返回的出错信息;如果正确,DOM里就有查询结果,并可通过分析该XML文档求得信息结果。另外XmlHttp还有responseText方法用于加载普通文件,但推荐使用XML文件格式。
3.3 XML_SQL查询
对于预定的性能函数GetTitlesXML(),可以结合SQL命令加强功能,进行数据库操作。例如,根据书籍的类型、价格和销售日期等信息,由Form表单的信息组成SQL条件字句,在IE客户端查询书籍的代码如下:
4 结语
总结了使用Msxml构件在客户端和后台Web服务器之间建立通讯联系的基本环节的实现方法,给出用户需要的ActiveX控件的部分方法和属性。Msxml提高得整个Web应用系统的自制性能,这为进一步实现胖B/S应用奠定了技术基础。