- 浏览: 590081 次
- 性别:
- 来自: 广州
文章分类
最新评论
-
smilezhouwei:
请问CruiseControl在加载jar包时,由于jar包过 ...
修改CruiseControl的端口 -
zengxuefei:
不起作用啊,有bug
Flex+Java多文件上传 -
lzeus:
模仿的tomcat源码吧?
java事件处理机制(自定义事件)【转】 -
yangbobestone:
...
FreeMarker整合Struts2 -
fddjxllren:
那是因为你没配置事务,楼主的那个主要是针对事务的写法
Spring2.5+JUnit4单元测试
ActionScript中Http请求
因我是用MVC模式来开发的,View和Control两层的相关代码就不列出来了,我们先来看看Model层代码
SecurityInfoModel.as
package app.securityInfo.model { import com.xlands.common.net.http.events.PureHttpEvent; import com.xlands.common.net.http.service.PureHttpService; import flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLRequest; public class SecurityInfoModel extends EventDispatcher { public static const EVENT_GET_SECURITY_INFO_SUCC:String = "EVENT_GET_SECURITY_INFO_SUCC"; private var _securityInfo:XML; public function SecurityInfoModel() { } /** * 根据id取用户信息 */ public function getSecurityInfo($id:int):void{ var request:URLRequest = PureHttpService.getSecurityInfoById($id) var action:XlandsPureHttpAction = new XlandsPureHttpAction(request); action.addEventListener(PureHttpEvent.EVENT_REQUEST_COMPLETE, __onGetSecurityInfoSucc); action.send(); } private function __onGetSecurityInfoSucc(event:PureHttpEvent):void{ (event.currentTarget as EventDispatcher).removeEventListener(PureHttpEvent.EVENT_REQUEST_COMPLETE, __onGetSecurityInfoSucc); _securityInfo = event.getResponseXML(); this.dispatchEvent(new Event(EVENT_GET_SECURITY_INFO_SUCC)); } } }
上上model层中用到了自定义的事件PureHttpEvent,主要用来下发事件时包装要传输的信息
PureHttpEvent.as
package com.xlands.common.net.http.events { import flash.events.Event; /** * * */ public class PureHttpEvent extends Event { public static const EVENT_REQUEST_COMPLETE:String = "event_complete"; public static const EVENT_IO_ERROR:String = "event_io_error"; public static const EVENT_FINISH:String = "event_finish"; private var _responseXML:XML; public function PureHttpEvent($type:String, $response:XML) { super($type, false, false); _responseXML = $response; } public function getResponseXML():XML { return _responseXML } } }
服务层提供接口
PureHttpService.as
package com.xlands.common.net.http.service { import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; /** * * */ public class PureHttpService { public function PureHttpService() { } /** * 根据id来取得用户信息 * @param $id */ public static function getSecurityInfoById($id:int):URLRequest { var sendObj:Object = new Object(); sendObj.$id = $id; return getSSORequest("/ssoc/accountsecurity/getSecurityInfo", $id); } private static function getSSORequest($url:String, $sendObj:Object=null):URLRequest{ return getRequest("http://www.yourwebsite/" + $url, $sendObj); } private static function getRequest($url:String, $sendObj:Object=null, $post:Boolean=true):URLRequest{ var request:URLRequest = new URLRequest(); request.url = $url; if ($sendObj){ var variables:URLVariables = new URLVariables(); for (var key:String in $sendObj){ variables[key] = $sendObj[key]; } request.data = variables; } if ($post){ request.method = URLRequestMethod.POST; } return request; } } }
再来看看真正的请求是如何处理的
XlandsPureHttpAction.as
package com.xlands.common.net.http { import com.xlands.common.net.http.events.PureHttpEvent; import flash.events.Event; import flash.events.EventDispatcher; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import flash.net.URLVariables; /** * * */ public class XlandsPureHttpAction extends EventDispatcher { private var _request:URLRequest; public function XlandsPureHttpAction($request:URLRequest) { _request = $request; } public function send():void { var urlLoader:URLLoader = new URLLoader(); urlLoader.addEventListener(Event.COMPLETE, onComplete); urlLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); urlLoader.addEventListener(ProgressEvent.PROGRESS, onProgress); urlLoader.load(_request); } private function onComplete(e:Event):void { e.currentTarget.removeEventListener(Event.COMPLETE, onComplete); e.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.currentTarget.removeEventListener(ProgressEvent.PROGRESS, onProgress); //analyzeResult(new XML((e.currentTarget as URLLoader).data)) if (this.hasEventListener(PureHttpEvent.EVENT_REQUEST_COMPLETE) == true) { this.dispatchEvent(new PureHttpEvent(PureHttpEvent.EVENT_REQUEST_COMPLETE, new XML((e.currentTarget as URLLoader).data))); } doFinish(); } private function analyzeResult($xml:XML):void { var value:*; if (($xml..success as XMLList).length()) { value = $xml..success.toString(); } else if (($xml..account as XMLList).length()) { /*这里很不好,很不统一,根据token获取用户信息 成功: <?xml version="1.0" encoding="UTF-8"?> <sso> <account id="100000" comeFrom="XLANDS" sex="false" nickname="samyang" name="samyang" email="aaaa@163.com" enable="false"/> </sso> */ value = $xml..account[0]; } else if (($xml..error as XMLList).length()) { value = $xml..error.toString(); } else { //服务器返回异常数据 throw new Error("the value which the server returns is invalidated!!"); return; } } private function onIOError(e:IOErrorEvent):void { e.currentTarget.removeEventListener(Event.COMPLETE, onComplete); e.currentTarget.removeEventListener(IOErrorEvent.IO_ERROR, onIOError); e.currentTarget.removeEventListener(ProgressEvent.PROGRESS, onProgress); if (this.hasEventListener(PureHttpEvent.EVENT_IO_ERROR) == true) { this.dispatchEvent(new PureHttpEvent(PureHttpEvent.EVENT_IO_ERROR, null)); } else { trace("您的请求不存在,或者服务器繁忙,请稍候再试。"); } doFinish() } private function onProgress(e:ProgressEvent):void { } private function doFinish():void { if (this.hasEventListener(PureHttpEvent.EVENT_FINISH) == true) { this.dispatchEvent(new PureHttpEvent(PureHttpEvent.EVENT_FINISH, null)); } } } }
发表评论
-
AS3 条件编译
2013-06-07 09:38 1347转:http://www.lite3.cn/blog/?p= ... -
TextField没有buttonMode的方法..
2010-12-10 16:28 2345TextField没有buttonMode的方法..不过由于T ... -
ActionScript 处理html超级链接
2010-12-09 11:14 2163ActionScript 处理html超级链接 p ... -
通过代理传参数
2010-07-02 11:43 1490通过代理传参数 package com.xlands.uti ... -
ArrayUtils
2010-07-02 11:36 1555/* Copyright aswing.org, s ... -
将数组随机排序后返回
2010-06-30 16:40 1853将数组随机排序后返回 方法一 /** * ... -
AS类中跳转
2010-06-29 10:22 1836AS类中跳转 navigate ... -
Flash与Javascript交互时可用ExternalInterface类
2010-06-29 10:17 3679Flash与Javascript交互时可用ExternalIn ... -
转载:[as hack技术]垃圾回收机强制执行
2010-06-29 09:47 1465转载:[as hack技术]垃圾回收机强制执行 http:// ... -
Flash中所支持的Html标签
2010-06-24 17:21 1409Flash中所支持的Html标签 ... -
navigateToURL()
2010-06-22 15:27 2529navigateToURL() public fun ... -
ActionScript字符串工具
2010-06-04 09:44 3297ActionScript字符串工具 package c ... -
加载外部SWF文件
2010-05-22 15:43 1407加载外部SWF文件 package mytest.dt { ... -
AsWing+Java上传文件
2010-05-11 09:16 1783AsWing+Java上传文件 UI是用AsWing实现比较 ... -
A*最最基础的非常非常好的寻路教程!
2010-05-08 10:01 2079最最基础的非常非常好 ... -
JTable单元格偏移
2010-05-07 11:15 1386如果Frame中有个表格JTable,且允许双击单元格编辑,那 ... -
ActionScript中日期正则表达式
2010-04-27 18:24 1307这里是判断YYYY-MM-DD这种格式的,基本上把闰年和 ... -
AS中使用JSON
2010-04-26 09:15 3026要使用json作为数据交换格式。需引入corelib Acti ... -
invalidateDisplayList
2010-03-31 14:39 1950当多次改变控件的某些属性(如 高,宽,数据)后,调用该方法以便 ... -
自定义组件XPropertyTable
2010-03-13 12:56 1648这个是基于AsWing组件库实现的 主要是对JTable和P ...
相关推荐
8. 网络通信:利用XMLSocket、URLLoader等类进行HTTP请求、XML数据交换,实现网络应用。 9. 数据存储:使用SharedObject进行本地数据持久化,或与服务器进行数据交换。 10. Flex框架:了解如何结合Flex SDK创建用户...
- **发送请求**:向服务器发送HTTP请求获取数据。 - **接收响应**:解析服务器返回的数据并作出相应处理。 #### 十六、XML运用 XML(可扩展标记语言)是一种常用的数据交换格式,ActionScript提供了支持XML处理的...
7. **网络编程**:AS3提供了`URLLoader`和`URLRequest`类来实现HTTP请求,`Socket`类用于TCP通信,以及`SharedObject`类用于本地数据存储。 8. **声音和视频处理**:`flash.media`包中的`Sound`和`Video`类提供了...
9. **网络编程**:使用ActionScript进行网络通信,包括Socket、URLLoader、XMLSocket等类的使用,实现HTTP请求和响应,以及WebSocket实时通信。 10. **音频和视频处理**:ActionScript提供了对音频和视频的访问和...
8. **网络编程**:ActionScript支持Socket和URLLoader类,可以进行HTTP请求和WebSocket通信,实现客户端与服务器的数据交换。 9. **错误处理和调试**:了解如何使用try-catch语句进行错误处理,以及使用...
5. **网络编程**:介绍如何进行HTTP请求、XML和JSON数据的处理。 6. **错误处理**:如何使用try-catch处理运行时错误。 7. **高级主题**:可能包括声音和视频处理、本地存储、性能优化等。 通过深入学习和实践这个...
7. **网络通信**:AS3提供了URLLoader和URLRequest类进行HTTP请求,Socket类处理TCP连接,XMLSocket类处理XML数据的发送和接收。这些工具允许与服务器进行异步通信,实现数据交换。 8. **声音与视频处理**:Sound和...
6. **网络通信**:通过XMLSocket、URLLoader和LoadVars等类,ActionScript 2.0支持与服务器进行数据交换,如发送HTTP请求、接收XML数据。 7. **组件使用**:Flash Player提供了许多预构建的UI组件,如Button、...
9. URLLoader和URLRequest:这两个类用于发送HTTP请求和接收响应,是网络通信的基础。 10. NetConnection和NetStream:用于建立实时的双向通信,如音频和视频流。 11. Stage和StageVideo:在AS3.0中,Stage类代表...
书中讲解了如何使用这些技术进行HTTP请求、发送POST数据,以及如何解析和生成XML和JSON格式的数据。 七、错误处理和调试 书中强调了错误处理的重要性,介绍了try...catch语句和Error类的使用,帮助开发者捕获和处理...
- **网络编程**:学习如何使用ActionScript3.0进行网络通信,如发送HTTP请求、读取XML数据等。 #### 七、案例分析 - **游戏开发**:介绍如何使用ActionScript3.0开发简单游戏,如平台游戏、射击游戏等。 - **多媒体...
AS3的网络功能也非常强大,可以用来处理HTTP请求、Socket通信、本地文件系统操作等。URLLoader和URLRequest类用于发送HTTP请求,XML和JSON数据的解析也很方便。对于实时通信,AS3支持Socket和SharedObject,后者允许...
3. **BlazeDS详解**:BlazeDS支持HTTP和WebSocket协议,提供MessageBroker服务,可以将Flex的Remoting和LiveCycle Data Services功能引入到Java应用中。它还包括一个频道配置文件,用于定义客户端和服务器间的通信...
在ActionScript中使用XML的示例:从Internet加载RSS数据 第章:使用本机JSON功能 JSONAPI概述 定义自定义JSON行为 第章:处理事件 事件处理基础知识 ActionScript事件处理与早期版本事件处理的不同之处 事件流 事件...
这部分内容将涉及HTTP请求、数据解析以及错误处理。 7. **音频和视频处理**:ActionScript 3.0对音频和视频的支持也得到了显著提升。书中的这一部分可能会讲解如何加载、播放、控制媒体,并处理媒体数据。 8. **...
书籍会介绍如何进行HTTP和FTP请求,以及如何使用AMF(Action Message Format)进行数据交换。对于游戏开发,可能会涉及网络对战和多人合作的实现。 最后,书中可能还会涵盖ActionScript 3.0的性能优化技巧和调试...
8. **网络通信**:ActionScript提供了XMLSocket和URLLoader类,用于实现客户端与服务器之间的数据交换,如发送HTTP请求和接收XML或JSON响应。 9. **错误处理**:学习如何使用try...catch语句来捕获和处理运行时错误...