flex 实现HTTP请求的三种方式

本文提供了一个使用ActionScript 3 (AS3) 进行Socket通信及HTTP请求的示例代码,展示了如何建立Socket连接、发送HTTP请求及处理响应数据。包括Socket连接管理、HTTP请求构造、错误处理等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值