此主机已被任天堂禁止使用网络服务,使用网络服务器中
为了向我们的程序提供数据,Adobe Flex包含专门设计用于与web服务、HTTP服务器或远程对象服务(Java对象)交互的组件。这些组件被称为远程过程调用(RPC)服务组件。
在本节中,我们将为一个博客创建一个简单的程序,它将列出过去30天中最受欢迎的文章。我们可以决定列出的文章数量。我们使用一个名为WebService的RPC服务组件发送用户的选择,博客站点提供的基于SOAP的网络服务获取数据,然后我们在一个DataGrid控件中显示数据。
在开始本节之前,我们需要完成以下任务:
创建课程项目
确保自动编译选项已打开。
检查对远程数据源的访问
出于安全原因,只有满足下列条件之一时,客户端上Flash player中的程序才能访问远程数据源:
我们的程序编译的SWF文件与远程数据源在同一个域中。
我们使用代理,我们的SWF文件和代理在同一个服务器上。
Adobe Flex数据服务为Flex程序提供了一个完整的代理管理系统。我们可以使用web脚本语言创建一个简单的代理服务,比如ColdFusion、JSP、PHP或ASP。
数据源的主机上安装了一个crossdomain.xml文件。
crossdomain.xml文件允许来自其他域的SWF文件访问数据源。
本节中使用的数据源位于安装了crossdomain.xml文件的域中。因此,Flash player可以访问远程数据。
以及插入和放置组件。
在本节中,我们将创建报告程序的布局。我们决定使用ComboBox控件来允许用户选择要列出的文章数量,并使用DataGrid控件来显示数据。
1在浏览视图中选择Lessons project,并创建一个名为Services.mxml的程序文件.
2将Services.mxml文件设置为默认编译程序文件。
在3 MXML编辑器的设计模式中添加一个面板容器,并设置以下属性:
标题:最受欢迎的帖子
宽度:475
身高:400
十点十分
Y: 10
4在设计模式下,将以下控件添加到面板容器中:
组合框
数据网格
链接按钮
5布局控件,效果如下图所示:
6选择ComboBox控件,并将其id属性设置为cbxNumPosts。
7切换到编辑器的代码模式,在mx:ComboBox选项卡中输入以下代码:
mx:对象标签=前5名数据=5/
mx:对象标签=前10个数据=10/
mx:对象标签=前15名数据=15/
8切换到设计模式,选择DataGrid控件,并设置以下属性:
ID: dgTopPosts
宽度:400
选择LinkButton控件并将其label属性设计为select and item,单击此处查看全文。
布局如下图所示:
10切换到代码模式,程序代码如下:
?xml版本=1.0 编码=utf-8 ?
MX:Application xmlns:MX= http://www . adobe . com/2006/mxml layout= absolute
mx:面板x=10 y=10 宽度=475 高度=400 布局=绝对
title=最受欢迎的帖子
MX:ComboBox x= 30 y= 25 id= cbxNumPosts
mx:对象标签=前5名数据=5 /
mx:对象标签=前10个数据=10 /
mx:对象标签=前15名数据=15 /
/mx:ComboBox
MX:DataGrid x= 30 y= 75 id= dgTopPosts width= 400
mx:列
MX:datagrid Column header text= Column 1 data field= col 1 /
MX:datagrid Column header text= Column 2 data field= col 2 /
MX:datagrid Column header text= Column 3 data field= col 3 /
/mx:列
/mx:数据网格
mx:LinkButton x=30 y=250
label=选择一个项目并单击此处查看全文/
/mx:面板
/mx:应用程序
接下来,我们将在程序中插入并配置RPC组件。
插入web服务组件
我们使用Flex的WebService组件来访问基于SOAP的web服务,并获取最近发布的博客文章的信息。
1在代码模式下,在mx:Application标记后输入mx:WebService标记。
mx:WebService id=wsBlogAggr
wsdl= http://weblogs . macromedia . com/mxna/web services/mxna 2 . CFC? wsdl
useProxy=false
/mx:WebService
2指定要传递给网络服务方法的参数
通过应用程序接口文档,我们知道getMostPopularPosts方法需要下面的参数:
工作日返回指明我们需要查看的过去的天数
限制指明我们要返回的总行数
在指定这些参数,在mx:网络服务标签中输入下面的标签:
mx:操作名称= getMostPopularPosts
mx:请求
工作日返回30天/工作日返回
limit {cbxNumPosts.value} /limit
/mx:请求
/mx:操作
mx:操作标签的名字属性必须与网络服务方法名相匹配。
我们为工作日返回参数使用一个定值,但是我们将限制参数绑定到cbxNumPosts组合框控件所选择的数目的值。我们希望用户指明要列出的文章的数目。
下一步就是要使程序调用网络服务方法。我们决定当组合框响应用户的选择改变时调用这个方法。
3在mx:组合框标签中添加下面的变化属性:
MX:ComboBox x= 30 y= 25 id= cbxNumPosts
change= wsblogaggr。getmospopularposts。发送()
最终的程序代码如下所示:
MX:应用程序xmlns:MX= http://www。土坯。 layout= absolute
mx:WebService id=wsBlogAggr
wsdl= http://网络日志。macromediacom/mxna/web services/mxna 2。CFC,” wsdl
useProxy=false
mx:操作名称= getMostPopularPosts
mx:请求
工作日返回30天/工作日返回
limit {cbxNumPosts.value} /limit
/mx:请求
/mx:操作
/mx:WebService
mx:面板x=10 y=10 宽度=475 高度=400 布局=绝对
title=最受欢迎的帖子
MX:ComboBox x= 30 y= 25 id= cbxNumPosts change= wsblogaggr。getmospopularposts。发送()
mx:对象标签=前5名数据=5 /
mx:对象标签=前10个数据=10 /
mx:对象标签=前15名数据=15 /
/mx:ComboBox
MX:DataGrid x= 30 y= 75 id= dgTopPosts width= 400
mx:列
MX:datagrid列标题text= Column 1 数据字段= col 1 /
MX:datagrid列标题text= Column 2 数据字段= col 2 /
MX:datagrid列标题text= Column 3 数据字段= col 3 /
/mx:列
/mx:数据网格
mx:LinkButton x=30 y=250
标签=选择一个项目并单击此处查看全文/
/mx:面板
/mx:应用程序
组装数据网格组件
我们希望使用数据网格控件来显示网络服务所返回的数据。特别的是,我们希望显示最受欢迎文章的标题以及点击数。
一在代码模式下,在mx:数据网格标签中添加下面的数据提供者属性:
MX:DataGrid x= 30 y= 75 id= dgTopPosts width= 400 数据提供程序= { wsblogaggr。getmospopularposts。最后结果}
2在第一个mx:DataGridColumn标签中,添加下面的标题与数据字段属性值:
MX:数据网格列标题文本=热门文章数据字段=文章标题/
3在第二个mx:DataGridColumn标签中,添加下面的headerText,数据字段以及宽度属性:
MX:datagrid列标题text= Clicks 数据字段= Clicks width= 75 /
四删除第三个mx:DataGridColumn标签。
最终的mx:数据网格如下所示:
MX:DataGrid x= 30 y= 75 id= dgTopPosts width= 400
数据提供程序=“{ wsblogaggr。getmospopularposts。最后结果}
mx:列
MX:数据网格列标题文本=热门文章数据字段=文章标题/
MX:datagrid列标题text= Clicks 数据字段= Clicks width= 75 /
/mx:列
/mx:数据网格
5保存文件,待编译完成后运行程序。
6 在代码模式下,输入下面的创作完成属性:
MX:应用程序xmlns:MX= http://www。土坯。 layout= absolute 创建完成= wsblogaggr。getmospopularposts。发送()
最终的程序代码如下所示:
?可扩展标记语言版本=1.0 编码=utf-8 ?
MX:应用程序xmlns:MX= http://www。土坯。 com/2006/mxml
layout=absolute
创建完成= wsblogaggr。getmospopularposts。发送()
mx:WebService id=wsBlogAggr
wsdl= http://网络日志。macromediacom/mxna/web services/mxna 2。CFC,” wsdl
useProxy=false
mx:操作名称= getMostPopularPosts
mx:请求
工作日返回30天/工作日返回
limit {cbxNumPosts.value} /limit
/mx:请求
/mx:操作
/mx:WebService
mx:面板x=10 y=10 宽度=475 高度=400 布局=绝对
title=最受欢迎的帖子
MX:ComboBox x= 30 y= 25 id= cbxNumPosts change= wsblogaggr。getmospopularposts。发送()
mx:对象标签=前5名数据=5 /
mx:对象标签=前10个数据=10 /
mx:对象标签=前15名数据=15 /
/mx:ComboBox
MX:DataGrid x= 30 y= 75 id= dgTopPosts width= 400 数据提供程序= { wsblogaggr。getmospopularposts。最后结果}
mx:列
MX:数据网格列标题文本=热门文章数据字段=文章标题/
MX:datagrid列标题text= Clicks 数据字段= Clicks width= 75 /
/mx:列
/mx:数据网格
mx:LinkButton x=30 y=250
标签=选择一个项目并单击此处查看全文/
/mx:面板
/mx:应用程序
七保存文件,在编译完成后运行。
程序的运行结果如下所示:
创建动态链接
我们决定创建一个动态链接可以打开浏览器查看全部的内容。
一在代码模式下,在mx:链接按钮标签中输入下面的点击属性:
MX:链接按钮x= 30 y= 250 label=选择一个项目并单击此处查看全文
click= navigate tourl(新url请求(dgtopposts。选择编辑项目。post link));/
2保存文件,在编译完成后运行。