首页 > 其他 > 详细

GMHttp

时间:2014-03-25 16:50:41      阅读:542      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
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);
        }

    }
}
bubuko.com,布布扣

GMHttp,布布扣,bubuko.com

GMHttp

原文:http://www.cnblogs.com/ference/p/3623178.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!