您的位置:首页 > 理论基础 > 计算机网络

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);
}

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: