使用httpservice與asp的偽web服務通訊,完成數據庫操作
我提供一個asp的偽服務思想:
clientreq.xml:
-------------------------------------------------- -----------------------------------------------
<?xml version=1.0 encoding=gb2312?>
<testpacket>
<msgtype>getvaluereq</msgtype>
<version>1.0</version>
</testpacket>
index.mxml:
-------------------------------------------------- -----------------------------------------------
<mx:model id=mreq source=clientreq.xml/>
<mx:httpservice id=hs url=http://asp/testserver.asp
resultformat=xml
method=post
contenttype=application/xml
showbusycursor=true>
<mx:request>
<xml>{mreq}</xml>
</mx:request>
</mx:httpservice>
testserver.asp:
-------------------------------------------------- -----------------------------------------------
主要有獲得數據包,解析數據包,指定操作,返回數據四步
1。獲得提交的數據包
set odom = server.createobject(msxml2.domdocument)
odom.load request
2。解析數據包,獲得msgtype
smsgtype = trim(odom.selectsinglenode(//msgtype).text)
select case smsgtype
case getvaluereq
call getvalue
'case deletevaluereq
' call deletevalue
case insertvaluereq
' call insertvalue(odom)
'case updatevaluereq
' call updatevalue
'else case
' call showerrmsg
end select
3。指定操作,此處完成getvalue操作,其中有很多可以做成公共的模塊供其他函數使用
sconn = driver={microsoft access driver (*.mdb)};dbq= & server.mappath(message.mdb)
set oconn = server.createobject(adodb.connection)
oconn.open sconn
ssql = select * from message order by id desc
set ors = server.createobject(adodb.recordset)
ors.open ssql, oconn, 1, 1
'構造無記錄xml文檔
if ors.eof and ors.bof then
sxml = <?xml version=1.0 encoding=gb2312?> & vbcrlf &_
<testpacket> & vbcrlf &_
<msgtype>systemresp</msgtype> & vbcrlf &_
<version>1.0</version> & vbcrlf &_
<result>0</result> & vbcrlf &_
</testpacket>
end if
'構造有記錄xml文檔
if not (ors.eof and ors.bof) then
do while not ors.eof
stmpxml = stmpxml & <messages> & vbcrlf &_
<name> & ors(name) & </name> & vbcrlf &_
<age> & ors(age) & </age> & vbcrlf &_
<sex> & ors(sex) & </sex> & vbcrlf &_
<msg> & ors(msg) & </msg> & vbcrlf &_
</messages> & vbcrlf
ors.movenext
loop
sxml = <?xml version=1.0 encoding=gb2312?> & vbcrlf &_
<testpacket> & vbcrlf &_
<msgtype>systemresp</msgtype> & vbcrlf &_
<version>1.0</version> & vbcrlf &_
<result>1</result> & vbcrlf & stmpxml &_
</testpacket>
end if
4.返回數據
set odom = server.createobject(msxml2.domdocument)
odom.loadxml(sxml)
odom.save(response)
set odom = nothing
message.mdb
-------------------------------------------------- -----------------------------------------------
數據庫名:message.mdb
數據表名:message
數據字段:字段類型
id 自動編號
name 文本
age 數字
sex 文本
msg 備註
執行結果:
-------------------------------------------------- -----------------------------------------------
我是設置httpservice的resultformat=text時,看顯示的結果
本主題包含附件: sf_2004111813537.jpg (23359bytes)
csdn blog: http://blog.csdn.net/stefli
stefli's mp3: http://stefli.88ip.net/flex/mp3player.swf