欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  php教程

AS3与PHP通信的五种方法(基于HTTP协议)

程序员文章站 2022-06-03 15:29:20
...
首先,这是基于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

}

}

}

摘自 黎岷鑫的专栏