- 浏览: 392040 次
- 性别:
- 来自: 天津
文章分类
- 全部博客 (196)
- window编程 (18)
- FLEX (37)
- 数据库 (5)
- Java---Struts2 (8)
- Window相关知识 (4)
- 网站建设相关知识 (2)
- java基础知识 (6)
- C# (8)
- 虚拟化 (3)
- 服务器--sound server (1)
- 网络协议 (5)
- Linux (21)
- linux-命令 (3)
- Windows-2008R2 (1)
- VBScript,异常处理 (1)
- windows域 (1)
- 弦歌不辍 (1)
- 语言---c++ (16)
- MFS (1)
- grub (1)
- 技术介绍 (3)
- 百度之星 (5)
- Web服务 (1)
- 存储管理 (2)
- NoSQL (3)
- plymouth (1)
- 工具 (1)
- 云计算 (1)
- 嵌入式 (1)
- usbip (1)
最新评论
-
canghailan:
C++中能直接操作的最大位数64,每64位统计,最后相加,暂时 ...
判断一段内存是否全部为0 -
yiranwuqing:
canghailan 写道Hamming weight 算法应 ...
判断一段内存是否全部为0 -
canghailan:
Hamming weight 算法应该效率更高
判断一段内存是否全部为0 -
zoufangyingzi:
楼主都用了哪些jar包,压缩包中没有lib包///
Rest实例演示 -
zpz112358:
具体是什么意思啊?
flex blazed 配置多个remoting-config
简单介绍信Flex与Web服务的交互
主要内容:
1.ActionScript与服务端的基本交互方式(REST).
2.ActionScript特有的数据传输格式(AMF)与服务器交互.
3.Flex与WebService.
要实现ActionScript与服务端交互, 首先必须知道以下几个类:
URLRequest类
记录请求服务端的URL信息, 给URLLoader进行发送操作.
URLVariables类
保存向服务端请求所需的参数, 一般用于POST方式传输,GET方式传输不需要使用.
URLRequestMethod类
该类只有两个静态常量值, 一个是POST, 一个是GET, 可以把它当作是一个枚举类型, 用于指定URL请求时使用POST方式或是GET方式.
URLLoader类
真正与服务端打交道的类, 通过load方法把一个Reuqest发送给服务端, 在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息. 传输过程中有可能产生IO错误, 有必要时可以为该对象添加IOError监听器.
例子:
var request: URLRequest = new URLRequest("http://localhost");
//默认为URLRequestMethod.GET, 若使用GET方式可以不指定
request.method = URLRequestMethod.POST;
//创建一个参数变量对象,用于保存所有向服务发送的参数数据, GET方式可以不使用
var vars: URLVariables = new URLVariables ();
vars["varName"] = varValue; //把参数键,值对放到vars对象中.
vars["var2Name"] = var2Value;
request.data = vars; //把参数对象放进Request对象中作为参数
// 通过request对象创建一个loader,
var loader: URLLoader = new URLLoader(request);
loader.addEventListener( //给loader对象添加完成时的监听器.
Event.COMPLETE,
function(e: Event):void //临时定义一个监听器
{
//服务端返回的数据是保存在loader的data里,通过以下语句可以得到
trace(URLLoader(e.target).data );//在监听器里处理服务端返回的数据
//complete
// process the data;
}
);
loader.addEventListener( //IOError监听器
IOErrorEvent.IO_ERROR,
//临时监听器,IO错误的处理在该函数中处理
function(e: IOErrorEvent): void {/* process the err;*/}
);
loader.load(request);//把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件
REST实例演示
通过AMF数据格式与服务器交互
什么是AMF?
AMF是Adobe公司制定一套ActionScript与服务端交互的数据格式, Flex本身已经有相关的类可以直接使用,但服务端则需要一个可以解释该格式的包或框架, 幸运的时现在已经存在大部分服务端语言解释AMF格式包与类库, 所以不用担心处理该格式的问题.
通过AMF数据格式与服务器交互
怎样在Flex中使用AMF数据格式进行传输?
在Flex中使用AMF需要通过以下几个类进行:
RemoteObject类, 可以作为Flex中的一个控件使用.
AsyncToken类, 保存一个请求的状态, 给请求添加监听器.
AsyncResponder类, 用于设置请求的两种返回结果, 返回成功或失败
ResultEvent类, 返回成功的事件对象, 返回的数据保存在该对象的result属性里.
FaultEvent类, 返回失败的事件对象, 该对象保存请求失败的所有信息.
通过AMF数据格式与服务器交互
例子(后台采用django + pyAMF):
在Application的MXML文件里创建一个RemoteObject对象
<mx:RemoteObject id="djangoService" destination="myservice"
showBusyCursor="true"/>
Flex编写以下代码:
//djangoService是面上创建一个RemoteObject对象, echo是服务端提供的一个无参数方法, 用于显示信息.
var token:AsyncToken=djangoService.echo();
//调用服务端的方法后返回一个Token对象
// 为Token添加成功与失败的监听器.
token.addResponder(new AsyncResponder(AfterEchoRet,falutHandler));
通过AMF数据格式与服务器交互
//定义成功与失败的监听器.
private function AfterEchoRet(result:ResultEvent):void{
trace(result.result);
//在这里处理返回的数据.数据保存于result属性中.
}
private function falutHandler(error:FaultEvent):void{
trace(error.message);
}
程序代码就只有这么多, 不过还需要一个Services-config.xml配置文件.
还需要在工程属性里添加一个参数, 设置如下:
通过AMF数据格式与服务器交互
services-config.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="ananasService" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="myservice">//需要对应pyAMF服务器上设定的destination 值,必须一致
<channels><channel ref="ananasChannel"/></channels> //对应下面定义的Channel
<properties><source>*</source></properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="ananasChannel" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://192.168.28.97/pysite/hello/gateway/" class="flex.messaging.endpoints.AMFEndpoint"/> //设置服务器终端URL地址
</channel-definition>
</channels>
</services-config>
RemoteObject的介绍:
view plaincopy to clipboardprint?
1. <mx:RemoteObject> 标签使您可以访问使用 Action Message Format (AMF) 编码的 Java 对象的方法。
2.
3. MXML 语法显示 MXML 语法
4. 隐藏 MXML 语法
5. The <mx:RemoteObject> tag accepts the following tag attributes:
6.
7. <mx:RemoteObject
8. Properties
9. concurrency="multiple|single|last"
10. destination="No default."
11. id="No default."
12. endpoint="No default."
13. showBusyCursor="false|true"
14. source="No default." (currently, Adobe ColdFusion only)
15. makeObjectsBindable="false|true"
16.
17. Events
18. fault="No default."
19. result="No default."
20. />
21.
22. <mx:RemoteObject> can have multiple <mx:method> tags, which have the following tag attributes:
23.
24. <mx:method
25. Properties
26. concurrency="multiple|single|last"
27. name="No default, required."
28. makeObjectsBindable="false|true"
29.
30. Events
31. fault="No default."
32. result="No default."
33. />
34. It then can have a single <mx:arguments> child tag which is an array of objects that is passed in order.
35.
36. endpoint 属性
37.
38. endpoint:String [读写]
39.
40.
41. 此属性可使开发人员在编译或以编程方式创建 ChannelSet 时快速指定 RemoteObject 目标的端点,而无需引用服务配置文件。如果已经为 RemoteObject 服务设置了 ChannelSet,它也可以覆盖现有的 ChannelSet。
42.
43. 如果端点 url 以“https”开头,将使用 SecureAMFChannel;否则将使用 AMFChannel。可以在端点 url 中使用 {server.name} 和 {server.port} 这两个特殊标记,以指定通道应使用用来加载 SWF 的服务器名称和端口。
44.
45. 注意:当创建 AIR 应用程序时该属性是必需的。
46.
47.
48.
49.
50. 实现
51. public function get endpoint():String
52. public function set endpoint(value:String):void
53.
54. showBusyCursor 属性
55.
56. showBusyCursor:Boolean [读写]
57.
58.
59. 如果为 true,在执行服务时会显示忙碌光标。默认值为 false。
60.
61.
62.
63. 实现
64. public function get showBusyCursor():Boolean
65. public function set showBusyCursor(value:Boolean):void
<mx:RemoteObject> 标签使您可以访问使用 Action Message Format (AMF) 编码的 Java 对象的方法。 MXML 语法显示 MXML 语法隐藏 MXML 语法 The <mx:RemoteObject> tag accepts the following tag attributes: <mx:RemoteObject Properties concurrency="multiple|single|last" destination="No default." id="No default." endpoint="No default." showBusyCursor="false|true" source="No default." (currently, Adobe ColdFusion only) makeObjectsBindable="false|true" Events fault="No default." result="No default." /> <mx:RemoteObject> can have multiple <mx:method> tags, which have the following tag attributes: <mx:method Properties concurrency="multiple|single|last" name="No default, required." makeObjectsBindable="false|true" Events fault="No default." result="No default." /> It then can have a single <mx:arguments> child tag which is an array of objects that is passed in order. endpoint 属性 endpoint:String [读写] 此属性可使开发人员在编译或以编程方式创建 ChannelSet 时快速指定 RemoteObject 目标的端点,而无需引用服务配置文件。如果已经为 RemoteObject 服务设置了 ChannelSet,它也可以覆盖现有的 ChannelSet。 如果端点 url 以“https”开头,将使用 SecureAMFChannel;否则将使用 AMFChannel。可以在端点 url 中使用 {server.name} 和 {server.port} 这两个特殊标记,以指定通道应使用用来加载 SWF 的服务器名称和端口。 注意:当创建 AIR 应用程序时该属性是必需的。 实现 public function get endpoint():String public function set endpoint(value:String):void showBusyCursor 属性 showBusyCursor:Boolean [读写] 如果为 true,在执行服务时会显示忙碌光标。默认值为 false。 实现 public function get showBusyCursor():Boolean public function set showBusyCursor(value:Boolean):void
一个简单的使用:
view plaincopy to clipboardprint?
1. <?xml version="1.0" encoding="utf-8"?>
2. <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" implements="laxino.slot.controller.network.IMessageSenderSlot">
3. <mx:Script>
4. <!--[CDATA[
5. public function setAmsEndPoint(address:String):void
6. {
7. ams_player_transaction.endpoint=address;
8. }
9.
10. public function setClient(gameClient:IGameClient):void
11. {
12. var config:IConfig=...; setAmsEndPoint(config.getEndpointForAMS());
13. Security.loadPolicyFile("http://www.xxxx.com/crossdomain.xml");
14. }
15.
16. public function sendToAmsPlayersTransFundin(data:Object, responder:IResponder = null):void
17. {
18. var info:Object = new Object();
19. info= data;
20. info["action"]="fund_in_for_play_game";
21. info["controller"]= "PlayerTransactionHistories";
22. if (responder == null)
23. {
24. responder = new BaseResponder();
25. }
26. //public class BaseResponder extends AsyncResponder
27.
28. var serviceCallToken:AsyncToken = ams_player_transaction.fund_in_for_play_game(info);
29. serviceCallToken.addResponder(responder);
30. }
31. ]]-->
32. </mx:Script>
33.
34. <mx:RemoteObject id="ams_player_transaction" source="PlayerTransactionHistories" destination="rubyamf">
35. <mx:method name="fund_in_for_play_game"/>
36. <!--tell the ams to fund in-->
37. <mx:method name="show_transaction_state"/>
38. <!--ping the ams server check if fund in success-->
39. </mx:RemoteObject>
40. </mx:Canvas>
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" implements="laxino.slot.controller.network.IMessageSenderSlot"> <mx:Script> <!--[CDATA[ public function setAmsEndPoint(address:String):void { ams_player_transaction.endpoint=address; } public function setClient(gameClient:IGameClient):void { var config:IConfig=...; setAmsEndPoint(config.getEndpointForAMS()); Security.loadPolicyFile("http://www.xxxx.com/crossdomain.xml"); } public function sendToAmsPlayersTransFundin(data:Object, responder:IResponder = null):void { var info:Object = new Object(); info= data; info["action"]="fund_in_for_play_game"; info["controller"]= "PlayerTransactionHistories"; if (responder == null) { responder = new BaseResponder(); } //public class BaseResponder extends AsyncResponder var serviceCallToken:AsyncToken = ams_player_transaction.fund_in_for_play_game(info); serviceCallToken.addResponder(responder); } ]]--> </mx:Script> <mx:RemoteObject id="ams_player_transaction" source="PlayerTransactionHistories" destination="rubyamf"> <mx:method name="fund_in_for_play_game"/> <!--tell the ams to fund in--> <mx:method name="show_transaction_state"/> <!--ping the ams server check if fund in success--> </mx:RemoteObject> </mx:Canvas>
Flex与WebService
u WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,通过WSDL,可描述Web服务的三个基本属性:
·服务做些什么——服务所提供的操作(方法)
·如何访问服务——和服务交互的数据格式以及必要协议
·服务位于何处——协议相关的地址,如URL
u Flex本身就拥有支持WebService的类, 常用的是: WebService类,该类已经可以实现对服务端提供的WebService的WSDL数据进行相应的操作.
Flex与WebService
Flex framework 包含mx.rpc.soap.WebService,该类可调用web services方法,首先创建WebService
对象,如下:
var webService:WebService = new WebService( );
每个web service都有一个Web服务描述语言(WSDL),通过WebService对象的wsdl属性进行定位:
webService.wsdl = "http://www.rightactionscript.com/webservices/FlashSurvey.php?wsdl";
在调用方法之前,必须先用loadWSDL( ) 方法读取wsdl数据:
webService.loadWSDL( );
loadWSDL( ) 方法是异步调用的,因此需要监听是否WSDL数据已经读取完毕,当数据读取完成
时WebService 对象会发出mx.rpc.soap.LoadEvent 事件,如:
webService.addEventListener(LoadEvent.LOAD, onWSDL);
当WSDL数据读取后,就可以调用WebService对象方法了,WSDL URL 指向真实的web service ,其有个方法叫getAverages( ) :
webService.getAverages( );
Flex与WebService
处理返回结果
Web services 方法的类型实际上是mx.rpc.soap.Operation,当web services 方法返回值时,方法对象会发出mx.rpc.events.ResultEvent 事件,要想处理这个事件可注册监听器,例如,webService有个方法叫getAverages( ),可这样注册监听器:
webService.getAverages.addEventListener(ResultEvent.RESULT, onGetAverages);
调用写法和其他方法一样:
webService.getAverages( );
当进入处理函数时,会传进来一个ResultEvent 参数,ResultEvent 类定义了一个叫result 的属性,它包含返回值,因为getAverages( ) 方法返回一个关联数组,包含两个属性:flash 和actionscript:
private function onGetAverages(event:ResultEvent):void {
textArea.text = "The averages for Flash and ActionScript are " +
event.result.flash + " and " + event.result.actionscript;
}
处理异常
当web services 引发异常时,方法会发出fault事件,类型为mx.rpc.events.FaultEvent,下面的代码注册了fault 事件处理函数:
webService.addEventListener(FaultEvent.FAULT, onWebServiceFault);
FaultEvent 类定义了一个fault属性,类型为mx.rpc.Fault. Fault 对象返回有关异常的信息,包含如faultCode, faultDetail, faultString, 和rootCause 属性,下面的例子用Alert 显示异常信息:
private onWebServiceFault(event:FaultEvent):void {
var fault:Fault = FaultEvent.fault;
var message:String = "An error occurred. The details are as follows\ncode: " + fault.faultCode;
message += "\ndetail: " + faul.faultDetail;
Alert.show("Web Service Error", message);
}
主要内容:
1.ActionScript与服务端的基本交互方式(REST).
2.ActionScript特有的数据传输格式(AMF)与服务器交互.
3.Flex与WebService.
要实现ActionScript与服务端交互, 首先必须知道以下几个类:
URLRequest类
记录请求服务端的URL信息, 给URLLoader进行发送操作.
URLVariables类
保存向服务端请求所需的参数, 一般用于POST方式传输,GET方式传输不需要使用.
URLRequestMethod类
该类只有两个静态常量值, 一个是POST, 一个是GET, 可以把它当作是一个枚举类型, 用于指定URL请求时使用POST方式或是GET方式.
URLLoader类
真正与服务端打交道的类, 通过load方法把一个Reuqest发送给服务端, 在load之前必须给该对象添加一个Complete事件的监听器,接收服务器返回的信息. 传输过程中有可能产生IO错误, 有必要时可以为该对象添加IOError监听器.
例子:
var request: URLRequest = new URLRequest("http://localhost");
//默认为URLRequestMethod.GET, 若使用GET方式可以不指定
request.method = URLRequestMethod.POST;
//创建一个参数变量对象,用于保存所有向服务发送的参数数据, GET方式可以不使用
var vars: URLVariables = new URLVariables ();
vars["varName"] = varValue; //把参数键,值对放到vars对象中.
vars["var2Name"] = var2Value;
request.data = vars; //把参数对象放进Request对象中作为参数
// 通过request对象创建一个loader,
var loader: URLLoader = new URLLoader(request);
loader.addEventListener( //给loader对象添加完成时的监听器.
Event.COMPLETE,
function(e: Event):void //临时定义一个监听器
{
//服务端返回的数据是保存在loader的data里,通过以下语句可以得到
trace(URLLoader(e.target).data );//在监听器里处理服务端返回的数据
//complete
// process the data;
}
);
loader.addEventListener( //IOError监听器
IOErrorEvent.IO_ERROR,
//临时监听器,IO错误的处理在该函数中处理
function(e: IOErrorEvent): void {/* process the err;*/}
);
loader.load(request);//把request对象发送到服务端.当请求完成,则会自动触发COMPLETE事件
REST实例演示
通过AMF数据格式与服务器交互
什么是AMF?
AMF是Adobe公司制定一套ActionScript与服务端交互的数据格式, Flex本身已经有相关的类可以直接使用,但服务端则需要一个可以解释该格式的包或框架, 幸运的时现在已经存在大部分服务端语言解释AMF格式包与类库, 所以不用担心处理该格式的问题.
通过AMF数据格式与服务器交互
怎样在Flex中使用AMF数据格式进行传输?
在Flex中使用AMF需要通过以下几个类进行:
RemoteObject类, 可以作为Flex中的一个控件使用.
AsyncToken类, 保存一个请求的状态, 给请求添加监听器.
AsyncResponder类, 用于设置请求的两种返回结果, 返回成功或失败
ResultEvent类, 返回成功的事件对象, 返回的数据保存在该对象的result属性里.
FaultEvent类, 返回失败的事件对象, 该对象保存请求失败的所有信息.
通过AMF数据格式与服务器交互
例子(后台采用django + pyAMF):
在Application的MXML文件里创建一个RemoteObject对象
<mx:RemoteObject id="djangoService" destination="myservice"
showBusyCursor="true"/>
Flex编写以下代码:
//djangoService是面上创建一个RemoteObject对象, echo是服务端提供的一个无参数方法, 用于显示信息.
var token:AsyncToken=djangoService.echo();
//调用服务端的方法后返回一个Token对象
// 为Token添加成功与失败的监听器.
token.addResponder(new AsyncResponder(AfterEchoRet,falutHandler));
通过AMF数据格式与服务器交互
//定义成功与失败的监听器.
private function AfterEchoRet(result:ResultEvent):void{
trace(result.result);
//在这里处理返回的数据.数据保存于result属性中.
}
private function falutHandler(error:FaultEvent):void{
trace(error.message);
}
程序代码就只有这么多, 不过还需要一个Services-config.xml配置文件.
还需要在工程属性里添加一个参数, 设置如下:
通过AMF数据格式与服务器交互
services-config.xml内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<services-config>
<services>
<service id="ananasService" class="flex.messaging.services.RemotingService" messageTypes="flex.messaging.messages.RemotingMessage">
<destination id="myservice">//需要对应pyAMF服务器上设定的destination 值,必须一致
<channels><channel ref="ananasChannel"/></channels> //对应下面定义的Channel
<properties><source>*</source></properties>
</destination>
</service>
</services>
<channels>
<channel-definition id="ananasChannel" class="mx.messaging.channels.AMFChannel">
<endpoint uri="http://192.168.28.97/pysite/hello/gateway/" class="flex.messaging.endpoints.AMFEndpoint"/> //设置服务器终端URL地址
</channel-definition>
</channels>
</services-config>
RemoteObject的介绍:
view plaincopy to clipboardprint?
1. <mx:RemoteObject> 标签使您可以访问使用 Action Message Format (AMF) 编码的 Java 对象的方法。
2.
3. MXML 语法显示 MXML 语法
4. 隐藏 MXML 语法
5. The <mx:RemoteObject> tag accepts the following tag attributes:
6.
7. <mx:RemoteObject
8. Properties
9. concurrency="multiple|single|last"
10. destination="No default."
11. id="No default."
12. endpoint="No default."
13. showBusyCursor="false|true"
14. source="No default." (currently, Adobe ColdFusion only)
15. makeObjectsBindable="false|true"
16.
17. Events
18. fault="No default."
19. result="No default."
20. />
21.
22. <mx:RemoteObject> can have multiple <mx:method> tags, which have the following tag attributes:
23.
24. <mx:method
25. Properties
26. concurrency="multiple|single|last"
27. name="No default, required."
28. makeObjectsBindable="false|true"
29.
30. Events
31. fault="No default."
32. result="No default."
33. />
34. It then can have a single <mx:arguments> child tag which is an array of objects that is passed in order.
35.
36. endpoint 属性
37.
38. endpoint:String [读写]
39.
40.
41. 此属性可使开发人员在编译或以编程方式创建 ChannelSet 时快速指定 RemoteObject 目标的端点,而无需引用服务配置文件。如果已经为 RemoteObject 服务设置了 ChannelSet,它也可以覆盖现有的 ChannelSet。
42.
43. 如果端点 url 以“https”开头,将使用 SecureAMFChannel;否则将使用 AMFChannel。可以在端点 url 中使用 {server.name} 和 {server.port} 这两个特殊标记,以指定通道应使用用来加载 SWF 的服务器名称和端口。
44.
45. 注意:当创建 AIR 应用程序时该属性是必需的。
46.
47.
48.
49.
50. 实现
51. public function get endpoint():String
52. public function set endpoint(value:String):void
53.
54. showBusyCursor 属性
55.
56. showBusyCursor:Boolean [读写]
57.
58.
59. 如果为 true,在执行服务时会显示忙碌光标。默认值为 false。
60.
61.
62.
63. 实现
64. public function get showBusyCursor():Boolean
65. public function set showBusyCursor(value:Boolean):void
<mx:RemoteObject> 标签使您可以访问使用 Action Message Format (AMF) 编码的 Java 对象的方法。 MXML 语法显示 MXML 语法隐藏 MXML 语法 The <mx:RemoteObject> tag accepts the following tag attributes: <mx:RemoteObject Properties concurrency="multiple|single|last" destination="No default." id="No default." endpoint="No default." showBusyCursor="false|true" source="No default." (currently, Adobe ColdFusion only) makeObjectsBindable="false|true" Events fault="No default." result="No default." /> <mx:RemoteObject> can have multiple <mx:method> tags, which have the following tag attributes: <mx:method Properties concurrency="multiple|single|last" name="No default, required." makeObjectsBindable="false|true" Events fault="No default." result="No default." /> It then can have a single <mx:arguments> child tag which is an array of objects that is passed in order. endpoint 属性 endpoint:String [读写] 此属性可使开发人员在编译或以编程方式创建 ChannelSet 时快速指定 RemoteObject 目标的端点,而无需引用服务配置文件。如果已经为 RemoteObject 服务设置了 ChannelSet,它也可以覆盖现有的 ChannelSet。 如果端点 url 以“https”开头,将使用 SecureAMFChannel;否则将使用 AMFChannel。可以在端点 url 中使用 {server.name} 和 {server.port} 这两个特殊标记,以指定通道应使用用来加载 SWF 的服务器名称和端口。 注意:当创建 AIR 应用程序时该属性是必需的。 实现 public function get endpoint():String public function set endpoint(value:String):void showBusyCursor 属性 showBusyCursor:Boolean [读写] 如果为 true,在执行服务时会显示忙碌光标。默认值为 false。 实现 public function get showBusyCursor():Boolean public function set showBusyCursor(value:Boolean):void
一个简单的使用:
view plaincopy to clipboardprint?
1. <?xml version="1.0" encoding="utf-8"?>
2. <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" implements="laxino.slot.controller.network.IMessageSenderSlot">
3. <mx:Script>
4. <!--[CDATA[
5. public function setAmsEndPoint(address:String):void
6. {
7. ams_player_transaction.endpoint=address;
8. }
9.
10. public function setClient(gameClient:IGameClient):void
11. {
12. var config:IConfig=...; setAmsEndPoint(config.getEndpointForAMS());
13. Security.loadPolicyFile("http://www.xxxx.com/crossdomain.xml");
14. }
15.
16. public function sendToAmsPlayersTransFundin(data:Object, responder:IResponder = null):void
17. {
18. var info:Object = new Object();
19. info= data;
20. info["action"]="fund_in_for_play_game";
21. info["controller"]= "PlayerTransactionHistories";
22. if (responder == null)
23. {
24. responder = new BaseResponder();
25. }
26. //public class BaseResponder extends AsyncResponder
27.
28. var serviceCallToken:AsyncToken = ams_player_transaction.fund_in_for_play_game(info);
29. serviceCallToken.addResponder(responder);
30. }
31. ]]-->
32. </mx:Script>
33.
34. <mx:RemoteObject id="ams_player_transaction" source="PlayerTransactionHistories" destination="rubyamf">
35. <mx:method name="fund_in_for_play_game"/>
36. <!--tell the ams to fund in-->
37. <mx:method name="show_transaction_state"/>
38. <!--ping the ams server check if fund in success-->
39. </mx:RemoteObject>
40. </mx:Canvas>
<?xml version="1.0" encoding="utf-8"?> <mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" implements="laxino.slot.controller.network.IMessageSenderSlot"> <mx:Script> <!--[CDATA[ public function setAmsEndPoint(address:String):void { ams_player_transaction.endpoint=address; } public function setClient(gameClient:IGameClient):void { var config:IConfig=...; setAmsEndPoint(config.getEndpointForAMS()); Security.loadPolicyFile("http://www.xxxx.com/crossdomain.xml"); } public function sendToAmsPlayersTransFundin(data:Object, responder:IResponder = null):void { var info:Object = new Object(); info= data; info["action"]="fund_in_for_play_game"; info["controller"]= "PlayerTransactionHistories"; if (responder == null) { responder = new BaseResponder(); } //public class BaseResponder extends AsyncResponder var serviceCallToken:AsyncToken = ams_player_transaction.fund_in_for_play_game(info); serviceCallToken.addResponder(responder); } ]]--> </mx:Script> <mx:RemoteObject id="ams_player_transaction" source="PlayerTransactionHistories" destination="rubyamf"> <mx:method name="fund_in_for_play_game"/> <!--tell the ams to fund in--> <mx:method name="show_transaction_state"/> <!--ping the ams server check if fund in success--> </mx:RemoteObject> </mx:Canvas>
Flex与WebService
u WSDL(Web Service Description Language)Web服务器描述语言是用XML文档来描述Web服务的标准,是Web服务的接口定义语言,通过WSDL,可描述Web服务的三个基本属性:
·服务做些什么——服务所提供的操作(方法)
·如何访问服务——和服务交互的数据格式以及必要协议
·服务位于何处——协议相关的地址,如URL
u Flex本身就拥有支持WebService的类, 常用的是: WebService类,该类已经可以实现对服务端提供的WebService的WSDL数据进行相应的操作.
Flex与WebService
Flex framework 包含mx.rpc.soap.WebService,该类可调用web services方法,首先创建WebService
对象,如下:
var webService:WebService = new WebService( );
每个web service都有一个Web服务描述语言(WSDL),通过WebService对象的wsdl属性进行定位:
webService.wsdl = "http://www.rightactionscript.com/webservices/FlashSurvey.php?wsdl";
在调用方法之前,必须先用loadWSDL( ) 方法读取wsdl数据:
webService.loadWSDL( );
loadWSDL( ) 方法是异步调用的,因此需要监听是否WSDL数据已经读取完毕,当数据读取完成
时WebService 对象会发出mx.rpc.soap.LoadEvent 事件,如:
webService.addEventListener(LoadEvent.LOAD, onWSDL);
当WSDL数据读取后,就可以调用WebService对象方法了,WSDL URL 指向真实的web service ,其有个方法叫getAverages( ) :
webService.getAverages( );
Flex与WebService
处理返回结果
Web services 方法的类型实际上是mx.rpc.soap.Operation,当web services 方法返回值时,方法对象会发出mx.rpc.events.ResultEvent 事件,要想处理这个事件可注册监听器,例如,webService有个方法叫getAverages( ),可这样注册监听器:
webService.getAverages.addEventListener(ResultEvent.RESULT, onGetAverages);
调用写法和其他方法一样:
webService.getAverages( );
当进入处理函数时,会传进来一个ResultEvent 参数,ResultEvent 类定义了一个叫result 的属性,它包含返回值,因为getAverages( ) 方法返回一个关联数组,包含两个属性:flash 和actionscript:
private function onGetAverages(event:ResultEvent):void {
textArea.text = "The averages for Flash and ActionScript are " +
event.result.flash + " and " + event.result.actionscript;
}
处理异常
当web services 引发异常时,方法会发出fault事件,类型为mx.rpc.events.FaultEvent,下面的代码注册了fault 事件处理函数:
webService.addEventListener(FaultEvent.FAULT, onWebServiceFault);
FaultEvent 类定义了一个fault属性,类型为mx.rpc.Fault. Fault 对象返回有关异常的信息,包含如faultCode, faultDetail, faultString, 和rootCause 属性,下面的例子用Alert 显示异常信息:
private onWebServiceFault(event:FaultEvent):void {
var fault:Fault = FaultEvent.fault;
var message:String = "An error occurred. The details are as follows\ncode: " + fault.faultCode;
message += "\ndetail: " + faul.faultDetail;
Alert.show("Web Service Error", message);
}
发表评论
-
flex使用amchart的破解水印方法
2010-12-23 10:18 2827需要继承AmChart的类,将宽、高、透明度设成0,例如: ... -
FLEX习作:图片轮播(18种过渡效果随机应用)
2010-08-29 00:51 2361主文件imgshow.mxml: 引用 <?xml v ... -
AS3及Flex的百条常用知识
2010-08-27 17:38 1564【自动大小调整和对齐】 TextField.autoSize ... -
Flex:在PANEL的title上加一个button
2010-08-26 16:30 1402在panel的titleBar上添加按钮,首先 overrid ... -
flex blazed 配置多个remoting-config
2010-08-22 17:37 2239我把配置贴出来,大家如果有类似需求可以参考下: remoti ... -
flex chart网站
2010-08-22 12:25 1875http://examples.adobe.com/flex2 ... -
FLEX:TypeError: Error #1034解决
2010-07-25 15:17 1690LEX:TypeError: Error #1034: 強制轉 ... -
页面跳转问题
2010-07-25 15:15 987其实对于这个题目是不恰当的,因为flex中是没有页面这个概念的 ... -
AIR的绿化
2010-07-25 14:35 772http://hi.baidu.com/fsnhf/blog/ ... -
flex中扩展combobox功能
2010-07-23 22:54 1346近段时间在忙flex的东西,边学习边使用。里边有个ComboB ... -
Flex调用Webservice时可能产生的所有错误,监控哪些错误
2010-07-22 22:22 2339判断web服务是否没有方法,是否路径错误,是否编码错误,是否解 ... -
flex Webservice 有哪些事件可监控
2010-07-22 21:25 1145private var webserviceURL:WebSe ... -
Flex跨域调用Webservice问题
2010-07-22 18:05 1965最近在用Flex做一个项目,在本机调试一切正常,传到服务器上之 ... -
Flex 字体使用
2010-07-20 22:36 1312Flex 支持的True Type和Open Type类型的字 ... -
个人总结flex各种用法
2010-07-20 22:29 1702多篇日志总结的,非原创,但为了更多人看这篇不错的日志,设置为原 ... -
Flex 平铺背景图片
2010-07-20 21:54 2149package { import flash.geom.Rec ... -
使用flex的session
2010-07-20 21:48 9951.写 session mxml 文件 加 <mx ... -
Flex控制session方法
2010-07-20 21:48 1602采用filter 监控 MessageBrokerServle ... -
Flex DataGrid 内联 itemRenderer
2010-07-20 14:51 2509dp.itemUpdated(event.data," ... -
LocalConnection实现swf与swf之间通信
2010-07-19 22:40 3204LocalConnection可以实现swf与swf之间的通信 ...
相关推荐
Flex与Web服务的交互是构建富互联网应用程序(RIA)中不可或缺的一部分,它允许客户端的Flex应用与服务端进行数据交换,实现动态功能和实时更新。本文将深入探讨Flex与Web服务交互的三种主要方式:基本的HTTP交互...
Flex与Web服务的通讯及交互是现代Web应用开发中的重要技术环节,主要涉及客户端与服务器端的数据交换。Flex作为Adobe推出的富互联网应用(RIA)框架,以其强大的图形用户界面和丰富的交互能力,常用于构建动态、数据...
当需要与符合WS-I标准的Web服务进行交互时,可以使用Flex的WebService组件。这通常涉及到SOAP协议。在Java端,我们需要部署一个符合WSDL(Web Services Description Language)规范的服务。在Flex客户端,配置...
本文将深入探讨Flex与Flash之间的交互,以及如何利用它们来构建动态、交互性强的Web应用程序。 Flex是由Adobe开发的一种开源框架,主要用于构建基于Flash Player或Adobe AIR的桌面和Web应用程序。它提供了MXML和...
Flex与.NET交互是一种常见的跨平台应用开发场景,它允许基于Adobe Flex的前端应用程序与Microsoft .NET框架后端服务进行通信。这种交互使得开发者能够利用Flex的富互联网应用(RIA)特性与.NET的强大后端功能相结合...
在本压缩包"Flex实例 Flex基础 Web+Flex+LCDS Flex跟Java交互"中,我们可以深入探讨Flex的基础知识、Web与Flex的集成、LCDS的使用以及Flex如何与Java进行数据交互。 1. **Flex基础**:Flex提供了一整套组件库,包括...
Flex是Adobe公司开发的一种开放源代码的富互联网应用程序(RIA)框架,主要用于构建具有动态图形、交互性丰富的Web应用。Flex应用程序通常使用ActionScript编程语言,并基于Flash Player或Adobe AIR运行时环境。Java...
Flex与JavaScript交互是Web开发中的一个重要技术,它允许在Adobe Flex应用和HTML页面之间进行数据交换和功能调用。在本示例中,我们将深入探讨如何实现这种交互,并通过具体的步骤来理解其工作原理。 首先,Flex是...
Flex与Servlet之间的数据交互是JavaWeb开发中的一个重要环节,它涉及到客户端富互联网应用程序(RIA)与服务器端数据处理的协同工作。Flex作为一个基于Adobe Flash Player的前端开发框架,主要用于创建具有丰富用户...
Flex可以通过使用WebService类与PHP的SOAP服务进行交互,调用远程方法并接收响应。 4. **AMF(Action Message Format)** - AMF是Adobe开发的一种二进制数据格式,用于提高数据传输效率。Flex SDK中的Flash ...
本文将详细介绍如何利用Flex与Java进行交互,并通过一个具体的示例来演示整个过程。 #### 二、准备工作 为了实现Flex与Java的交互,我们需要完成以下准备工作: 1. **下载BlazeDS**: BlazeDS是一款Adobe提供的...
7. **示例代码**:`C#与flex交互.doc`、`C#与flex交互`、`flex与C#交互`这些文档很可能是包含具体实现步骤和示例代码的资源,它们将详细介绍如何在C# WinForm中创建WCF服务,以及如何在Flex项目中配置AMF通道和...
标题中的"C#与Flex交互"指的是在开发过程中,使用C#作为后端处理逻辑,而Flex作为前端用户界面,两者之间进行数据和功能的通信。Flex是一种基于Adobe AIR和Flash Player运行时的开源框架,主要用于构建富互联网应用...
Flex与JavaScript交互是Web开发中的一个重要技术,它允许在Adobe Flash Player或Adobe AIR环境中运行的Flex应用程序与HTML页面中的JavaScript代码进行通信。这种交互性极大地扩展了富互联网应用(RIA)的功能,使得...
而Flex项目通常不直接与数据库交互,而是通过调用Web服务接口,将请求转发给后端处理。 3. **Flex项目中的数据访问**: 在Flex项目中,可以使用Flash Player的Socket或HTTPService组件来发送请求到Web项目。...
### Flex与JavaScript交互详解 #### 一、引言 随着Web技术的发展,不同语言之间的通信变得尤为重要。在Flex与HTML的结合中,Flex通常作为富客户端应用,而JavaScript则负责处理网页逻辑。为了实现二者之间的无缝...
当需要与符合WS-I标准的Web服务进行交互时,Flex提供了`s:WebService`组件。在这个例子中,Flex连接到一个名为`HelloWorld`的Web服务,并调用其`sayHello`操作。同样,我们需要在Flex代码中配置Web服务的WSDL地址,...
Flex是Adobe公司开发的一种用于构建富互联网应用程序(RIA)的技术,它基于ActionScript编程语言和Flex框架,可以创建交互性强、用户体验优秀的Web应用程序。在本"Flex在Web中的应用实例"中,我们将深入探讨Flex如何...