GMHttp
2014-03-25 15:03
197 查看
package com.xx.module.core { import flash.events.Event; import flash.events.HTTPStatusEvent; import flash.events.IEventDispatcher; import flash.events.IOErrorEvent; import flash.events.ProgressEvent; import flash.events.SecurityErrorEvent; import flash.net.URLLoader; import flash.net.URLLoaderDataFormat; import flash.net.URLRequest; import flash.net.URLRequestHeader; import flash.net.URLRequestMethod; import flash.net.URLVariables; import flash.utils.ByteArray; public class GMHttp { public static const RESPONSE_OK:int = 1; //响应成功 public static const RESPONSE_ERR:int = 2; //响应失败 //数据回调 public var responseCallback:Function; //function(EventType, data) //进度回调 public var progressCallback:Function; //function(loaded, total) public var requestUrl:String; //要请求的url public var requestData:Object; //要发送的数据 public var request:URLRequest; public var method:String = URLRequestMethod.GET; private var loader:URLLoader; private var responseHeaders:Array; private var dataFormat:String = URLLoaderDataFormat.TEXT; public function GMHttp(url:String, data:Object = null, callback:Function = null) { requestUrl = url; requestData = data; responseCallback = callback; if(data) method = URLRequestMethod.POST; } public function send(data:Object = null):void { if(data) requestData = data; configureLoader(); loader.load(request); } public function setContentType(type:String):void { if(request == null) request = new URLRequest(); request.contentType = type; } //设置http头 public function setRequestHeader(key:String, value:String):void { if(method == URLRequestMethod.GET) method = URLRequestMethod.POST; if(request == null) { request = new URLRequest(); } for(var i:int = 0; i < request.requestHeaders.length; ++i){ var h:URLRequestHeader = request.requestHeaders[i]; if(h.name == key){ h.value = value; return; } } var header:URLRequestHeader = new URLRequestHeader(key, value); request.requestHeaders.push(header); } //获取响应头 public function getResponseHeaderForKey(key:String):String { var ret:String = null; if(this.responseHeaders){ for(var i:int = 0; i < request.requestHeaders.length; ++i){ var h:URLRequestHeader = request.requestHeaders[i]; if(h.name == key){ ret = h.value; break; } } } return ret; } private function configureLoader():void { if(request == null) request = new URLRequest(); request.url = requestUrl; request.method = method; if(requestData){ method = URLRequestMethod.POST; if( requestData is String){ request.data = new URLVariables(String(requestData)); dataFormat = URLLoaderDataFormat.TEXT; } else if(requestData is ByteArray){ request.data = requestData; dataFormat = URLLoaderDataFormat.BINARY; } else { var v:URLVariables = new URLVariables(); for(var i:String in requestData){ v[i] = requestData[i]; } request.data = v; dataFormat = URLLoaderDataFormat.VARIABLES; } } loader = new URLLoader(); loader.dataFormat = dataFormat; configureListeners(loader); } private function configureListeners(dispatcher:IEventDispatcher):void { dispatcher.addEventListener(Event.COMPLETE, completeHandler); dispatcher.addEventListener(Event.OPEN, openHandler); dispatcher.addEventListener(ProgressEvent.PROGRESS, progressHandler); dispatcher.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); dispatcher.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); dispatcher.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); } private function completeHandler(event:Event):void { var loader:URLLoader = URLLoader(event.target); trace("completeHandler: " + loader.data); } private function openHandler(event:Event):void { trace("openHandler: " + event); } private function progressHandler(event:ProgressEvent):void { trace("progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); } private function securityErrorHandler(event:SecurityErrorEvent):void { trace("securityErrorHandler: " + event); } private function httpStatusHandler(event:HTTPStatusEvent):void { if(event.hasOwnProperty("responseHeaders") && event.responseHeaders) { this.responseHeaders = event.responseHeaders; trace("headers ====================== " + event.responseHeaders); } trace("httpStatusHandler: " + event); } private function ioErrorHandler(event:IOErrorEvent):void { trace("ioErrorHandler: " + event); } } }
相关文章推荐
- TCP的拥塞控制 (二)
- TCP的拥塞控制 (一)
- 基于TCp的数据包传输过程
- 建设网络强国,反制黑客入侵
- http请求代码出现Cookie rejected错误解决方法
- Errore HTTP 404.2 - Not Found" IIS 7.5 请求的内容似乎是脚本,因而将无法由静态文件处理程序来处理
- Linux利用curl库快速开发http应用
- Android回顾之网络接口
- Python-网络爬虫
- 深入理解Http协议
- session会话技术本质分析
- linux系统http镜像源的搭建
- CAS_SSO单点登录实例详细步骤(转)、Tomcat ssl(https) 配置
- 网络管理员不可不知的交换机知识
- 【转】Windows下C语言的Socket编程例子(TCP和UDP)
- 黑马程序员--Java基础总结---网络编程
- 学习Ajax框架之dojo:第三节——dojo中xmlHttp的用法(附源代码)
- https
- HTTP_X_REAL_IP
- iOS http get和post(3)