此主机已被任天堂禁止使用网络服务,使用网络服务器中

  此主机已被任天堂禁止使用网络服务,使用网络服务器中

  为了向我们的程序提供数据,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保存文件,在编译完成后运行。

此主机已被任天堂禁止使用网络服务,使用网络服务器中