最近在项目开发中,需要用到socket来模拟http请求,dog sun的socket跨域问题大家自行注意了
大致说一下就是需要在server上监听一个843端口,返回策略文件字符串给客户端
这个时候名气最大的自然是as3httpclient了,这里不多说了,我日志里有相关的介绍
但是有时候这个swc过于冗余了。对于我来说,精简代码那么就希望能够更好的压缩容量了
加个swc直接大100多K是不能容忍的。
后面找到一个能应付项目需求的http_loader,这里感谢原作者并给出地址
https://github.com/chndyyang/fookie/tree/master/http_loader/net/fdream/io
有了这个以后两个文件就满足了需求,下面再分享一下我写好的httprequest,需要自行导入httploader.swc或者将代码加入项目
用法很简单,源码稍微看看就懂了。个人习惯用回调,而不是抛事件,这个因人而异,随便改吧
1 /** 2 * @ClassName HttpRequest.as 3 * @Description socket模拟http请求 4 * All rights Reserved, Designed By Video++ 5 * CopyRight Copyright(C) 2015 6 * Company www.videojj.com 7 * @author Dennis 8 * @version V1.0 9 * @Date 2015-11-26 21:13:27 10 */ 11 package com.videojj 12 { 13 import flash.events.Event; 14 import flash.events.HTTPStatusEvent; 15 import flash.events.IOErrorEvent; 16 import flash.events.ProgressEvent; 17 import flash.events.SecurityErrorEvent; 18 import flash.net.URLRequest; 19 import flash.net.URLRequestHeader; 20 21 import net.fdream.io.HTTPLoader; 22 import net.fdream.io.HTTPResponse; 23 24 public class HttpRequest 25 { 26 private var _url:String; 27 private var _method:String; 28 29 private var _request:URLRequest; 30 private var loader:HTTPLoader; 31 32 public var sucCallbackFun:Function; 33 public var failedCallbackFun:Function; 34 35 /** 36 * @Title: HttpRequest 37 * @Description: 构造函数 38 * @param: url 39 * @param: method urlrequestmethod.GET OR POST 40 * @throws 41 */ 42 public function HttpRequest(url:String, method:String) 43 { 44 _url = url; 45 _method = method; 46 47 _request = new URLRequest(_url); 48 _request.method = _method; 49 50 loader = new HTTPLoader(); 51 loader.addEventListener(Event.COMPLETE, completeHandler); 52 loader.addEventListener(Event.OPEN, openHandler); 53 loader.addEventListener(ProgressEvent.PROGRESS, progressHandler); 54 loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler); 55 loader.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpStatusHandler); 56 loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler); 57 } 58 59 private function completeHandler(event:Event):void 60 { 61 var loader:HTTPLoader = HTTPLoader(event.target); 62 var response:HTTPResponse = loader.response; 63 64 if(sucCallbackFun != null) 65 { 66 sucCallbackFun(response); 67 } 68 } 69 70 private function openHandler(event:Event):void { 71 trace("acc openHandler: " + event); 72 } 73 74 private function progressHandler(event:ProgressEvent):void { 75 trace("acc progressHandler loaded:" + event.bytesLoaded + " total: " + event.bytesTotal); 76 } 77 78 private function securityErrorHandler(event:SecurityErrorEvent):void 79 { 80 if(failedCallbackFun != null) 81 { 82 failedCallbackFun(event); 83 } 84 } 85 86 private function httpStatusHandler(event:HTTPStatusEvent):void { 87 trace("acc httpStatusHandler: " + event); 88 } 89 90 private function ioErrorHandler(event:IOErrorEvent):void { 91 if(failedCallbackFun != null) 92 { 93 failedCallbackFun(event); 94 } 95 } 96 97 public function addHeader(header:URLRequestHeader):void 98 { 99 _request.requestHeaders.push(header); 100 } 101 102 public function request():void 103 { 104 loader.load(_request); 105 } 106 107 public function set data(value:Object):void 108 { 109 _request.data = value; 110 } 111 } 112 }