51Testing软件测试网qBBp,vS IGMicrosoft.XMLHttp组件的属性方法
;C y^3r~P0一、使用步骤:51Testing软件测试网
p
z4KTr*yo
1、创建XMLHTTP对象 //需MSXML4.0支持
9XlF)C%A]S:s&M02、打开与服务端的连接,同时定义指令发送方式,服务网页(URL)和请求权限等。客户端通过Open命令打开与服务端的服务网页的连接。与普51Testing软件测试网 Yh;O
p8x4B[~
通HTTP指令传送一样,可以用"GET"方法或"POST"方法指向服务端的服务网页。
$w3|/Q(wS@6^d*[03、发送指令。
L8m(]~C_TWM,h$Lk04、等待并接收服务端返回的处理结果。51Testing软件测试网*iV_\*B#j)~1{d2r
5、释放XMLHTTP对象51Testing软件测试网wI@w*M/tH.}
$i&g3`2f;G0二、XMLHTTP方法:
Q:ZbZF`'Gz0Open( bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword )
5Z2F A&|ruz0bstrMethod: 数据传送方式,即GET或POST。51Testing软件测试网9Lyq"S&\#I#ty
bstrUrl: 服务网页的URL。
#UA_6w(BN.p:zt"k0varAsync: 是否同步执行。缺省为True,即同步执行,但只能在DOM中实施同步执行。用中一般将其置为False,即异步执行。
{6A/Lm-n6m#? D-C0bstrUser: 用户名,可省略。
/[W#Hf4P0bstrPassword:用户口令,可省略。
_/FW%`T;K(i)x0
{C/Fl,RoS%h(ev8k0Send( varBody )
$M v
Gh]3F0varBody:指令集。可以是XML格式数据,也可以是字符串,流,或者一个无符号整数数组。也可以省略,让指令通过Open方法的URL参数代入。51Testing软件测试网%wR(?$ob$c#c
"OAE*f1}8mQo0setRequestHeader( bstrHeader, bstrvalue )
#T(Y"W^Sg.T"M0bstrHeader:HTTP 头(header)
#Je,WSbHT4M0bstrvalue: HTTP 头(header)的值
x,[-E3G*YG0如果Open方法定义为POST,可以定义表单方式上传:
u2V;sVb*mO0xmlhttp.setRequestHeader( "Content-Type", "application/x-www-form-urlencoded")51Testing软件测试网"W)_v:Rrkg#o
51Testing软件测试网
d.}NP#A-@x三、XMLHTTP属性:51Testing软件测试网!x2Vn6FxUN9m
onreadystatechange:在同步执行方式下获得返回结果的事件句柄。只能在DOM中调用。51Testing软件测试网6dLo^ }p)bL
responseBody: 结果返回为无符号整数数组。51Testing软件测试网/{VPx1y:q
responseStream: 结果返回为IStream流。51Testing软件测试网{mH%]
u"O*D
responseText : 结果返回为字符串。
)T'c%DcsRID6B0Fv0responseXML: 结果返回为XML格式数据。51Testing软件测试网#X1O_%J.EM-TZ
D,^
具体的使用方法
7qZw P/B6yQ7K#lG0创建XMLHTTP对象的语句如下:
Su4Vj$P0@1L+AO1^o N0Set ōbjXML = CreateObject("Msxml2.XMLHTTP") 或51Testing软件测试网KRgy CK9LT
Set ōbjXML = CreateObject("Microsoft.XMLHTTP")
h OX)r
@ ]W
?7Y3|X0'Or for version 3.0 of XMLHTTP, use:
pX!G{9J
z0B0'Set ōbjXML = Server.CreateObject("MSXML2.ServerXMLHTTP")
U'A1UW&M"lj$x5n051Testing软件测试网_5O^0Cjlx对象创建后调用Open方法对Request对象进行初始化,语法格式为:51Testing软件测试网9b4e-u}}.?<
,c*D!RG9v-Mu$X[0objXML.open http-method,url,async,userID,password
Bs*z0Dp'E@07LcET"bz W0Open方法中包含了5个参数,前三个是必要的,后两个是可选的(在服务器需要进行身份验证时提供)。参数的含义如下所示:
kI/[3nNqX#C051Testing软件测试网
yPyZ A*dhQQhttp-method:HTTP的通信方式,比如GET或是POST
)y8c~$~7^6_*\l i_0url:接收XML数据的服务器的URL地址。通常在URL中要指明ASP或CGI程序51Testing软件测试网K E7k'I#o$m+O7_
async:一个布尔标识,说明请求是否为异步的。如果是异步通信方式(true),客户机就不等待服务器的响应;如果是同步方式(false),客户机就要等到服务器返回消息后才去执行其他操作51Testing软件测试网jtrxrN6Fg
userID:用户ID,用于服务器身份验证
_i+Q`b0password:用户密码,用于服务器身份验证51Testing软件测试网(o]H:c.|
ru\&nRH0XMLHTTP对象的Send方法51Testing软件测试网+sh&Jj/`pb"I
@gk(z8VoQV0用Open方法对Request对象进行初始化后,调用Send方法发送XML数据:
S {M+bb-[&y8A2v051Testing软件测试网{:MS R-b m{4xobjXML.send()51Testing软件测试网zu
ncR
H*^!n
'tw%N`\*P}0Send方法的参数类型是Variant,可以是字符串、DOM树或任意数据流。51Testing软件测试网;O
CP'U(s
1Y0U8L8l"S'L0发送数据的方式分为同步和异步两种。在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
c4v9o[:`3C;y(L)VV051Testing软件测试网Tr%P0kC:BXMLHTTP对象中的readyState属性51Testing软件测试网/Y'}!q$L)WI
y V X*}H$r,R$f0Nt0其能够反映出服务器在处理请求时的进展状况。客户机的程序可以根据这个状态信息设置相应的事件处理方法。属性值及其含义如下表所示:
\q \0l:oK4_051Testing软件测试网}8z uq2J)k#nsX,\51Testing软件测试网*V2|~ab
值 说明51Testing软件测试网-W
Q(L!B(iYK)F
0 Response对象已经创建,但XML文档上载过程尚未结束
[-E m+Aq%b!E$T01 XML文档已经装载完毕
oDLUMF7G9Y02 XML文档已经装载完毕,正在处理中51Testing软件测试网l$G+RJi,vl:U
3 部分XML文档已经解析51Testing软件测试网.Q(c3R0D6WF
4 文档已经解析完毕,客户端可以接受返回消息51Testing软件测试网(zItR&D U
51Testing软件测试网+|+ea H Ux A:U5c e客户机处理响应信息,客户机接收到返回消息后,进行简单的处理,基本上就完成了C/S之间的一个交互周期。51Testing软件测试网hnI ~Gp*H0dc
51Testing软件测试网&ll ?}*x|AG{客户机接收响应是通过XMLHTTP对象的属性实现的:51Testing软件测试网N!fr.Zk/?[!G$R+~
xk5p.J7O0?P{0responseText:将返回消息作为文本字符串;51Testing软件测试网Q|NpW^kU
responseBody:将返回消息作为HTML文档内容;
Y NV%jt `m\.C0responseXML:将返回消息视为XML文档,在服务器响应消息中含有XML数据时使用;51Testing软件测试网#W"XG!qN*a3H-U
responseStream:将返回消息视为Stream对象51Testing软件测试网a,ewp^LsY#ZwV
%w\"aCja#s0以下是一个简单的例子:类似新闻小偷51Testing软件测试网 x
hh,]^E1y
51Testing软件测试网)o;C|~
u:j5r<%51Testing软件测试网l&GsHS,X
U_
Set ōbjXML = Server.CreateObject("MSXML2.ServerXMLHTTP")51Testing软件测试网 L.xhlOb7tp
objXML.open "GET","http://www.alexa.com",false
FQ:J a8l`Gf%\0objXML.send()
gR)CaU'^J Z&R:F2X0response.write(objXML.responseText)51Testing软件测试网&J9C&|@"ux|(l
%>51Testing软件测试网J6k8k?w
PJM7@^-F0