献给第一次接触flex与asp通讯的新手
当然,前提是,您已经安装好了flex,部署好了服务器。并且在这台测试服务器上运行了2个服务器软件:IIS和基于java的flex服务器。具体安装,可以参照我前面写的关于flex的安装的文章。
先说一下总体思路:flex应用程序编译为swf文件之后,通过HTTPService向asp服务器发送请求,asp服务器收到请求后,以XML文档的形式向swf文件发送数据,swf再读取该数据,并显示在指定的容器中。
MXML部分
Flex开发环境中,现建立一个flex应用程序。然后再添加使用HTTPService的代码,如下:
<mx:HTTPService id="abc" url="http://127.0.0.1/bridge.asp" showBusyCursor="true" method="GET">
</mx:HTTPService>
这里要说明一下,如果需要把得到的数据放在一个dataGrid里面,那么,就需要在这个HTTPService的属性里面添加 result="List1()",因为DATAGRID在只有一条数据的时候不会显示,所以需要用一个函数将返回的数据强制转换为数组,这样就能显示了,代码如下:
<mx:Script>
<![CDATA[
function List1() {
var resultArray1:Array = mx.utils.ArrayUtil.toArray(abc.result.sResult.course);
datagrid1.dataProvider = resultArray1;//指定后面的datagrid1的dataProvider为这个数组。
}
</mx:Script>
接下来,我们来做datagrid这个数据容器:
<mx:DataGrid id="datagrid1">
<mx:columns>
<mx:Array>
<mx:DataGridColumn width="200" columnName="bt" headerText="标题"/>
</mx:Array>
</mx:columns>
</mx:DataGrid>
这样,这个app就做好了,只是要注意,你运行这个app的时候,并没有启用HTTPService.如何启用呢?需要在应用程序初始化的时候,发送这个HTTPService。即,添加初始化命令:<mx:Application xmlns:mx="http://www.macromedia.com/2003/mxml" pageTitle="Pilot of Ria!" initialize="abc.send();" >,也就是在您的App定义的时候,加入initialize="abc.send();"
还有一个要注意的,如果您需要把编译出来的swf文件部署到不支持flex的网络上应用,那么,HTTPService的属性里面添加useProxy="false",这个属性默认是true.如果不设定这个属性的值,那么就必须部署在支持flex的服务器上,并且在/WEB-INF/flex/flex-config.xml中的HTTPService中whitelist的unnamed.url节点中添加flex允许的http地址。如,本例中的,就应该添加http://127.0.0.1/bridge.asp,或者http://127.0.0.1/*表示所有本机http服务。
ASP部分:
新建一个文本文件,再把这个文件另存为bridge.asp,注意,另存为的时候,编码应该选择utf-8.然后在这个asp文件中输入代码。关键的输出xml的代码为:
<%
dim sqlNew,rsNew
sXml="<?xml version=""1.0"" encoding=""utf-8""?>"&vbCrLf
sXml=sXml&"<sResult>"&vbCrLf
do while not rsNew.eof
sXml=sXml&"<course>"&vbCrLf
sXml=sXml&"<rl>"&rsNew("title")&"</rl>"&vbCrLf
sXml=sXml&"</course>"&vbCrLf
rsNew.movenext
loop
end if
rsNew.close
set rsNew=nothing
sXml=sXml+"</sResult>"&vbCrLf
response.ContentType="text/xml;Charset=""utf-8"""
response.write sXml
%>
当然,您必须自己建立数据库,在asp中定义好数据库连接文件,并且把这个asp文件放在可用的asp服务器中。
还有一点要提醒的是,您必须使用商业版的flex,如果使用的是开发者版的,那么,您编译出来的flex将会在24小时后自动失效,也就不能部署到不支持flex的web服务器。因此您必须要拥有flex的正版序列号。