AS3.0 利用AMFPHP与PHP进行通讯 .

注意:amfphp的不同的版本与php不同的版本会有冲突。具体检测方法是:在web根目录下解压amfphp后,访问该url: http://localhost/amfphp/browser/,如果没有报任何错误,那么恭喜你。如果有错误,请更换amfphp的版本。
方法如下:
1、声明一个NetConnection,选择使用AMF3协议,现在一般都用AMF3
2、声明一个Responder对象,该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。
3、用NetConnection.call()读取PHP里面的方法,NetConnection.call(command:String, responder:Responder)。
Responder里两个函数参数,第一个,如果对服务器的调用成功并返回结果,则此函数被调用。例子中的onSuccess。第二个, 如果服务器返回一个错误,则此函数被调用。例子中的,onError。示例如下:

package   

    import flash.display.Sprite; 
    import flash.events.*; 
    import flash.net.NetConnection; 
    import flash.net.ObjectEncoding; 
    import flash.net.Responder;  
      
    public class ASWithPHP_2 extends Sprite  
    { 
        private var connection:NetConnection = new NetConnection(); 
        private var rsp:Responder = new Responder(onSuccess, onError); 
        private var phpUrl:String = "PHP地址"; //注意是字符串,而不是URLRequest  
         
        public function ASWithPHP_2()  
        { 
            init(); 
        } 
         
        private function init():void  
        { 
            connection.objectEncoding = ObjectEncoding.AMF3; //选择AMF3协议  
            connection.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus); 
            connection.connect(phpUrl); //连接后台PHP地址  
            connection.call("PHP里面的方法", rsp); 
        } 
         
        private function onNetStatus(e:NetStatusEvent):void  
        { 
            switch(e.info.code) { 
                case "NetConnection.Connect.Success": 
                trace("连接成功"); 
                break; 
                 
                case "NetStream.Play.StreamNotFound": 
                trace("没有找到:" + phpUrl); 
                break; 
            } 
        } 
         
        private function onSuccess(obj:Object):void { 
            trace("OK:" + obj); 
        } 
         
        private function onError(_obj:Object):void { 
            trace("错误");     
        } 
    } 
 

posted @ 2013-02-05 09:28  【Winco】  阅读(543)  评论(0编辑  收藏  举报