首先,這是基於HTTP協議的,然後主要是下面的五種方法。
/**
* 這是基於HTTP協議的
* 一共介紹了五種方法
*/
package
{
import flash.display.Sprite;
import flash.events.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import flash.net.URLVariables;
import flash.net.URLRequestMethod;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequestHeader;
import flash.utils.ByteArray;
/**
* ...
* @author .....Li灬Star
* @contact...QQ:168527720
*/
public class ASWithPHP_1 extends Sprite
{
private var urlLoader:URLLoader;
private var phpUrl:URLRequest;
public function ASWithPHP_1()
{
init();
}
private function init():void
{
urlLoader = new URLLoader();
phpUrl = new URLRequest("PHP地址");
/**
* 第一種:直接讀取PHP裡面的數據
*/
//----------------------------------------------------------------------
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
/**
* URLLoaderDataFormat.BINARY:String---->指定以原始二進制數據形式接收下載的數據
* URLLoaderDataFormat.TEXT:String----> 指定以文本形式接收已下載的數據
* URLLoaderDataFormat.VARIABLES:String---->指定以URL 編碼變量形式接收下載的數據
*/
urlLoader.load(phpUrl);
urlLoader.addEventListener(Event.COMPLETE, completeHandler1);
//-----------------------------------------------------------------------
/**
* 第二種:讀取PHP生成的xml
*/
//-------------------------------------------------------------------------
urlLoader.load(phpUrl);
urlLoader.addEventListener(Event.COMPLETE, completeHandler2);
//-------------------------------------------------------------------------
/**
* 第三種:通過GET方法把參數傳到PHP裡面
*/
//--------------------------------------------------------------------------
phpUrl.method = URLRequestMethod.GET;
phpUrl.data = "要傳出去的數據";
urlLoader.load(phpUrl);
urlLoader.addEventListener(Event.COMPLETE, completeHandler3);
//--------------------------------------------------------------------------
/**
* 第四種:通過POST方法把參數傳到PHP裡面 www.2cto.com
*/
//--------------------------------------------------------------------------
phpUrl.method = URLRequestMethod.POST;
var vars:URLVariables = new URLVariables();
vars.value1 = "參數1";
vars.value2 = "參數2";
phpUrl.data = vars;
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.load(phpUrl);
urlLoader.addEventListener(Event.COMPLETE, completeHandler4);
//--------------------------------------------------------------------------
/**
* 第五種:二進制通信方法
*/
//----------------------------------------------------------------------------
var requestHeader:URLRequestHeader = new URLRequestHeader("Content-type", "application/octet-stream");
phpUrl.method = URLRequestMethod.POST;
phpUrl.requestHeaders.push(requestHeader);
var byteArr:ByteArray = new ByteArray();
byteArr.writeByte(12);
byteArr.writeUTF("CNSloppyMan");
var sendData:ByteArray = new ByteArray();
sendData.writeInt(byteArr.length);
sendData.writeBytes(byteArr);
phpUrl.data = sendData;
urlLoader.dataFormat = URLLoaderDataFormat.BINARY;
urlLoader.load(phpUrl);
urlLoader.addEventListener(Event.COMPLETE, completeHandler5);
//-----------------------------------------------------------------------------
}
private function completeHandler1(e:Event):void
{
var vars:URLVariables = URLVariables((e.currentTarget as URLLoader).data);
trace("接受數據:" + vars.value); //假定value是PHP裡面自定義的節點值
}
private function completeHandler2(e:Event):void {
var xml:XML = new XML((e.currentTarget as URLLoader).data);
trace("xml數據:" + xml.toString());
}
private function completeHandler3(e:Event):void {
trace("GET-已經傳出去的數據:" + (e.currentTarget as URLLoader).data);
}
private function completeHandler4(e:Event):void {
trace("POST-已經傳出去的數據:" + (e.currentTarget as URLLoader).data);
}
private function completeHandler5(e:Event):void {
var _byteArr:ByteArray = e.currentTarget.data as ByteArray;
trace(_byteArr.readInt()); //14
trace(_byteArr.readByte()); //12
trace(_byteArr.readUTF()); //CNSloppyMan
}
}
}
摘自 黎岷鑫的專欄