flex 实现HTTP请求的三种方式

            public function SocketHttpTest():void{
                sock=new Socket();
                sock.addEventListener(Event.CONNECT,_onSktConnected);
                sock.addEventListener(ProgressEvent.SOCKET_DATA,_onSktData);
                sock.addEventListener(IOErrorEvent.IO_ERROR,IOErrorHandler);
                sock.connect(host,port);
            }
            
            public function IOErrorHandler(e:Event):void{
                trace("IO Error");
                trace(e.toString());
            }
            
            public function _onSktConnected(e:Event):void{
                trace("connected....");
                SocketHttpTestSend();
            }
            
            public function _onSktData(e:Event):void{
                trace("IO data");
                var str:String=(e.target as Socket).readMultiByte((e.target as Socket).bytesAvailable,"UTF-8");
                trace(str);
                trace(str.substring(str.indexOf("\r\n\r\n")+"\r\n\r\n".length));
                sock.close();
                init();
            }
            
            public function SocketHttpTestSend():void{
                var header:String="GET /com.broadsoft.xsi-actions/v1.0/user/nionUser1@xdp.broadsoft.com/directories/Enterprise HTTP/1.1\r\n";
//                var header:String="GET /com.broadsoft.xsi-actions/v2.0/user/nionUser1@xdp.broadsoft.com/profile HTTP/1.1\r\n";       
                header+="Accept:*/*\r\n";
                header+="Accept-Language: en-us\r\n";
                header+="Accept-Encoding: gzip, deflate\r\n";
                header+="Host:"+host+"\r\n";
                header+="User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; SV1; .NET CLR 1.1.4322; CIBA; .NET CLR 2.0.50727)\r\n";
                header+="Cache-Control: no-cache\r\n";
                header+="Connection: Keep-Alive\r\n";
                header+="Authorization: Basic "+getEncodedAuthorization()+"\r\n\r\n";
                var bta:ByteArray=new ByteArray();
                bta.writeUTF(header);
                sock.writeUTFBytes(header);       
                sock.flush();                
            }
            
            public function HTTPServiceTest():void{
                var service:HTTPService=new HTTPService();
                service.url="http://xsp1.xdp.broadsoft.com:80/com.broadsoft.xsi-actions/v2.0/user/nionUser1@xdp.broadsoft.com/profile";
                service.method = "GET";
                service.headers["Authorization"]="Basic "+getEncodedAuthorization();
                service.addEventListener("result", httpResult);
                service.addEventListener("fault", httpFault);
                service.send();  
            }
            
            public function URLLoaderTest():void{
                var loader:URLLoader=new URLLoader();
                loader.dataFormat=URLLoaderDataFormat.BINARY;
                loader.addEventListener(Event.COMPLETE,test);
                
                var request:URLRequest=new URLRequest("");
                request.method=URLRequestMethod.GET;
                
                var header:URLRequestHeader=new URLRequestHeader("Authorization","Basic "+getEncodedAuthorization());
                request.requestHeaders.push(header);
                trace(header.value);
                loader.load(request);
            }
            
            public function getEncodedAuthorization():String{
                var encoder:Base64Encoder=new Base64Encoder();
                encoder.insertNewLines=false;
                encoder.encode("user:pass");
                
                return encoder.toString();
            }
            
            public function httpResult(event:ResultEvent):void {
                 var faultstring:String = event.message.body.toString();
//                 var faultstring:String = event.result.Profile.details.userId;
                 trace(faultstring);
             }
            
         public function httpFault(event:FaultEvent):void {
                 var faultstring:String = event.fault.faultString;
                 trace(faultstring);
         }            

posted on 2012-11-22 16:11  一个石头  阅读(829)  评论(0)    收藏  举报