Rumah > pembangunan bahagian belakang > tutorial php > As3利用AMFPHP与PHP进展通讯

As3利用AMFPHP与PHP进展通讯

WBOY
Lepaskan: 2016-06-13 10:38:46
asal
800 orang telah melayarinya

As3利用AMFPHP与PHP进行通讯

来自:http://bbs.9ria.com/thread-65836-1-1.html

?

首先,说下具体配置,PHP版本:5.2.5,apache:2.2.11,(或者WAMP2.2),amfphp:1.9版本(附件已提供),windows xp系统。

注意:amfphp的不同的版本与php不同的版本会有冲突。具体检测方法是:在web根目录下解压amfphp后,访问该url: http://localhost/amfphp/browser/,如果没有报任何错误,那么恭喜你。如果有错误,请更换amfphp的版本。

经我的测验,上面那个配置是不会有问题的。

在具体的项目中,有时我们会使用As3纯项目,所以在As3中Amf通讯也经常用到,今天我们来讲讲在As3中的方法。(以前已经发过flex与amfphp通讯的相关文章,请查阅后台板块)
在As3端,主要就是NetConnection的使用,首先选择使用AMF3协议,这个是现在常用的,AMF0因为要兼容以前的版本,所以有些冗余。
然后使用connect方法连接后台url。
然后声明一个Responder对象,该对象在 NetConnection.call() 中使用以处理来自与特定操作成功或失败相关的服务器的返回值。
接着使用NetConnection,call 后台php端类中的方法,如本例的HelloWorld.getData,记着把是所声明的 Responder对象写到call方法的第2个参数里。

注意看Responder里两个函数参数,第一个,如果对服务器的调用成功并返回结果,则此函数被调用。例子中的onSuccess
第二个, 如果服务器返回一个错误,则此函数被调用。例子中的,onError。

好,来看看As3端:

package  {    import flash.display.Sprite;    import flash.events.NetStatusEvent;    import flash.net.NetConnection;    import flash.net.ObjectEncoding;    import flash.net.Responder;    /**     * ...     * @author 纳兰容若     */    public class AMFTest extends Sprite{        private var netCon:NetConnection = new NetConnection();        private var rsp:Responder = new Responder(onSuccess, onError);        private var phpUrl:String = "http://localhost/amfphp/gateway.php";        public function AMFTest() {            netCon.objectEncoding = ObjectEncoding.AMF3;            netCon.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);            netCon.connect(phpUrl);            netCon.call('HelloWorld.getData', rsp);        }        private function onNetStatus(e:NetStatusEvent):void {            trace("failed");        }        private function onSuccess(rspObj:Object):void {            trace("ok: "+rspObj);        }        private function onError($rspObj:Object):void {            trace("AMF client error.");        }    }}
Salin selepas log masuk

?

php端:

<?phpclass HelloWorld {        /**         * @desc 向用户表示友好问候         * @access remote         * @returns String         */        public function getData() {             return "Hello World";        }}?>
Salin selepas log masuk

php文件命名为 HelloWorld.php,放到 D:\webroot\amfphp\services中。(注意:D:\webroot是我的web根目录,这个具体设置要看你自己的。)

如果链接出现问题,则有可能是如下错误导致的:

?

Fatal error: Uncaught exception 'VerboseException' with message 'Standalone Flash player disabled. Update gateway.php to allow these connections' in C:\wamp\www\amfphp\core\amf\app\Gateway.php on line 357 VerboseException: Standalone Flash player disabled. Update gateway.php to allow these connections in C:\wamp\www\amfphp\core\amf\app\Gateway.php on line 357 Call Stack: 0.0003 374432 1. {main}() C:\wamp\www\amfphp\gateway.php:0 0.0062 874840 2. Gateway->disableStandalonePlayer() C:\wamp\www\amfphp\gateway.php:137 0.0062 875056 3. trigger_error() C:\wamp\www\amfphp\core\amf\app\Gateway.php:357 0.0062 875720 4. amfErrorHandler() C:\wamp\www\amfphp\core\amf\app\Gateway.php:357

?

此时只需要按提示,打开gateway.php文件,屏蔽掉原135、137行即可。

?

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan