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

首先,这是基于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

}

}

}

摘自 黎岷鑫的专栏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值