• 【设为首页】
  • 【收藏闪客居】
当前位置:主页>Flex>文章内容
  • FLEX应用Remoting进行数据传输
  • 来源:fck.name 作者:fck 2008-05-04 【

今天有个朋友问我怎么用Remoting来和flex进行数据传输,他懂得用XML传输,用文本字符串传输,但是我就是搞不懂他为什么认为Remoting应用是复杂的呢?!呵呵,是我们把它给神秘化了,其实它的应用是很简单的,我来简单的说一下!

FLEX Remoting可应用的服务器运行语言有多种选择,PHP ASP.NET JSP都可以,由于我们要应用到AMF,而AMFPHP是一个不错的选择,它是完全免费的,而其不用安装,完全由PHP进行编写,只要电脑能运行PHP就可以执行AMFPHP,所以这里我们选择AMFPHP。
首先我们先去下载一个AMFPHP,地址:http://amfphp.sourceforge.net/ 它是一个压缩文件,下载完毕后把这个压缩包里的文件解压到自己服务器的WEB目录即可,比如C:/webroot/amfphp,这样我们就可以访问到http://localhost/amfphp
好,下面我们写一个简单的PHP用来读取数据库中数据 getDB.php 注意,此文件必须存放在amfphp目录下的services文件夹里,此文件夹是默认用来存放PHP Remoting程序的:
<?php
class getDB{ 
 //这个函数将被Flex远程调用
 function getData() { 
  mysql_connect("localhost", "root","password");
  mysql_select_db("test");
  mysql_query("SET NAMES UTF8");
  //查询所有数据并返回
  $sql="select * from test";
  return mysql_query($sql);
 }
}
?>
这段程序的意思是从数据库test表里读出的所有数据返回,我们还需要一个配置文件services_config.xml,用来提供FLEX远程识别服务器信息,其中里面配置了一些AMFPHP的入口文件路径信息:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="amfphp-flashremoting-service" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="amfphp">
<channels>
<channel ref="my-amfphp"/>
</channels>
<properties>
<source>*</source>
</properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="my-amfphp" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://localhost/amfphp/gateway.php" class="flex.messaging.endpoints.AMFEndpoint"/>
</channel-definition>
</channels>
</services-config>
要注意的是里面的http://localhost/amfphp/gateway.php这个路径,如果你设置的和本路径不同,一定记得修改。把services_config.xml文件放置在你的站点的根目录。好,下一步我们就可以编写FLEX客户端程序了,FLEX是用RemoteObject对象来接收从服务器出来的对象的:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
  creationComplete="initApp()">
 <mx:Script>
 <![CDATA[
 import mx.rpc.http.HTTPService;
 import mx.rpc.events.ResultEvent;
 import mx.rpc.events.FaultEvent; 
 import flash.events.Event;
   
 internal function initApp():void{
        //获得远程getData方法,并请求该方法
 service.getOperation('getData').send();
 }
 internal function resultHandler(evt:ResultEvent):void{
 //这个方法处理的是当加载成功后获得远程getData
        //返回的数据,通过evt.result这个访问    
 //如myGrid.dataProvider=evt.result;
 }
 internal function faultHandler(evt:FaultEvent):void{
 //处理加载错误
 trace("fault:"+evt.fault);
 }
 ]]>
 </mx:Script>
 
<mx:RemoteObject id="service" fault="faultHandler(event)" source="getDB" destination="amfphp">
//创建方法,与远程方法同名
<mx:method name="getData" result="resultHandler(event)" />
</mx:RemoteObject>

</mx:Application>
好了,到目前为止思路我已经讲完了,没有过多的讲程序的细节(我比较懒),但是相信代码已经贴出应该能看懂的。 

 

-*-本页地址:http://fck.name/node/38,转载请注明出处,谢谢!-*-



上一篇:Flex中如何通过设置backgroundColor和backgroundAlpha改变DateChooser控件背景颜色的   下一篇:使用AIR显示/加载本地图片
  • 用户名:新注册) 密码: 匿名评论
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规)


FLASH源文件

Copyright © 2006-2008 flashas.net All Rights Reserved.
网站内容咨询: admin#flashas.net (#为@) 联系QQ:40777822 浙ICP备06033001号
(本网站最佳浏览解析度为1024*768, 建议使用IE 6.0或以上版本浏览器。)