PHP平台的AFM-RPC实现----amfphp(二)HelloWorld范例
来源:互联网 发布:p2p网络借贷入罪 编辑:程序博客网 时间:2024/06/10 07:46
第一部分讲了amfphp环境配置::http://hi.baidu.com/taotao5453/blog/item/ef942a1f3623e0c5a68669b5.html
这里开始做一个简单的amfphp实现Flex和PHP通信的例子。请安装第一部分配置好amfphp环境再进行下面代码。
1、服务端
在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\3jk\AMFApp\org\zangsanfeng下新建一个HelloWorld.php,并写入代码:
<?php
class HelloWorld
{
function HelloWorld()
{
$this->methodTable = array (
'sayHelloWorld' => array (
'description' => '将字符串 “嗨!AMF-FPC for PHP”返回给Flex',
'access' => 'remote',
'arguments' => array()
)
);
}
function sayHelloWorld()
{
return "嗨!AMF-RPC for PHP";
}
}
?>
2、Flex客户端
使用Flash Builder或Flex3 新建一个Flex工程,next步骤参考下面三图:
注意:Flex sdk选择4.0以下版本,我的sdk是项目创建完后更改的,我用的sdk3.5。
-
-
-
创建完成后,在main.mxml中添加代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private function getData_Result(e:ResultEvent):void{
myTextArea.text = e.result.toString();
}
private function getData_Fault(e:FaultEvent):void{
myTextArea.text = e.fault.faultString;
}
]]>
</mx:Script>
<mx:RemoteObject id="myService" destination="amfphp"
endpoint="http://localhost/3jk/gateway.php"
source="org.zangsanfeng.HelloWorld" showBusyCursor="true">
<mx:method name="sayHelloWorld" result="getData_Result(event)" fault="getData_Fault(event)"/>
</mx:RemoteObject>
<mx:TextArea id="myTextArea" fontSize="12"/>
<mx:Button label="调用方法" fontSize="12" click="myService.sayHelloWorld();"/>
</mx:Application>
开始调试,调试页面中点击“调用方法”按钮,就会调用远程方法,并将返回结果“嗨!AMF-RPC for PHP”显示在文本框中。如图:
-
AMFPHP简单原理:
在客户端,服务端方法请求被使用RemoteObject类自动序列化为AMF格式,在服务端,AMFPHP逆序列化AMF信息。当服务端完成处理时,结果又被序列化为AMF格式,并发回Flex应用程序。服务端创建的AMF信息格式与客户端创建的AMF信息格式相同。单独的AMF信息包主体内包含了错误或响应对象,它们被表述成一个ActionScript对象。
这里开始做一个简单的amfphp实现Flex和PHP通信的例子。请安装第一部分配置好amfphp环境再进行下面代码。
1、服务端
在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\3jk\AMFApp\org\zangsanfeng下新建一个HelloWorld.php,并写入代码:
<?php
class HelloWorld
{
function HelloWorld()
{
$this->methodTable = array (
'sayHelloWorld' => array (
'description' => '将字符串 “嗨!AMF-FPC for PHP”返回给Flex',
'access' => 'remote',
'arguments' => array()
)
);
}
function sayHelloWorld()
{
return "嗨!AMF-RPC for PHP";
}
}
?>
2、Flex客户端
使用Flash Builder或Flex3 新建一个Flex工程,next步骤参考下面三图:
注意:Flex sdk选择4.0以下版本,我的sdk是项目创建完后更改的,我用的sdk3.5。
-
-
-
创建完成后,在main.mxml中添加代码:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script>
<![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
private function getData_Result(e:ResultEvent):void{
myTextArea.text = e.result.toString();
}
private function getData_Fault(e:FaultEvent):void{
myTextArea.text = e.fault.faultString;
}
]]>
</mx:Script>
<mx:RemoteObject id="myService" destination="amfphp"
endpoint="http://localhost/3jk/gateway.php"
source="org.zangsanfeng.HelloWorld" showBusyCursor="true">
<mx:method name="sayHelloWorld" result="getData_Result(event)" fault="getData_Fault(event)"/>
</mx:RemoteObject>
<mx:TextArea id="myTextArea" fontSize="12"/>
<mx:Button label="调用方法" fontSize="12" click="myService.sayHelloWorld();"/>
</mx:Application>
开始调试,调试页面中点击“调用方法”按钮,就会调用远程方法,并将返回结果“嗨!AMF-RPC for PHP”显示在文本框中。如图:
-
AMFPHP简单原理:
在客户端,服务端方法请求被使用RemoteObject类自动序列化为AMF格式,在服务端,AMFPHP逆序列化AMF信息。当服务端完成处理时,结果又被序列化为AMF格式,并发回Flex应用程序。服务端创建的AMF信息格式与客户端创建的AMF信息格式相同。单独的AMF信息包主体内包含了错误或响应对象,它们被表述成一个ActionScript对象。
0 0
- PHP平台的AFM-RPC实现----amfphp(二)HelloWorld范例
- 运行amfphp范例出错
- 系统间通信:基于TCP协议的RPC实现范例
- 系统间通信:基于TCP协议的RPC实现范例
- foolscap实现rpc(二)
- 简单的RPC编程实践——HelloWorld的实现
- AMFPHP完整实现中文显示的方法
- 一个分布式rpc框架的实现方案(二)
- 使用Akka实现一个简单的RPC框架(二)
- 基于Netty的RPC简单框架实现(二):RPC服务端
- 一起写RPC框架(十五)RPC注册中心二--注册中心的基本实现
- XML-RPC的HelloWorld实例
- Hadoop RPC实现NIO通信范例
- AMFPHP + PHP 5.3.1
- RPC服务框架(二) 简单RPC实现
- RMI 之 简单的 HelloWorld 实现(二)
- php+amfphp+flex+mssql其中的乱码问题
- 微信/易信公共平台开发(二):自定义菜单的PHP实现(提供源码)
- Google Chubby介绍
- Flip Image 2014 ( V4.0.2 ) 商业版&试用版免费下载(含电子古籍、家谱制作功能)
- 第二十九讲 : ADO.NET(玩SQL语句 主要是OLEDB实例操作)
- 标题栏
- HTML5 地理定位 【来自百度应用分享平台】
- PHP平台的AFM-RPC实现----amfphp(二)HelloWorld范例
- HDU 1016 Prime Ring Problem
- java实现的统计随机数次数
- Android 进程生命周期 Process Lifecycle
- 第二次上机赛解题报告及标程
- 集合中线程安全
- Android内存管理、监测剖析
- 新浪微博的 【微博登陆按钮】部署在页面上后,登陆后,按钮始终未变
- #pragma GCC poison 的一个有趣特性