轻量级SOAP-PHPPRC实践(2)-与FLEX交互

轻量级SOAP---PHPPRC实践(二)--与FLEX交互

  之前简单介绍了利用PHPRPC发布服务,使用JAVA/JS客户端进行远程调用.那么作为RIA的箭头,任何服务当然也离不开与FLEX地交互.

  接下来是FLEX客户端地调用,界面很简单,一个面板+一个按钮,按钮点击事件中开始调用服务器端服务,服务器端代码和之前的一样:

  

public class User
	{
		public function User()
		{
		}
		public var name:String;
		public var password:String;

	}

 

 

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
	<mx:Panel x="102" y="24" width="590" height="301" layout="absolute">
		<mx:Button x="112" y="194" label="获得"  id="btn" click="test()"/>
	</mx:Panel>
	
	<mx:Script>
		<![CDATA[
			import org.phprpc.PHPRPC_Client;
			import mx.controls.Alert;
			
		    private static const URL:String = "http://localhost:8888/t/t.do?m=test";
			
			//按扭事件
			private function test():void{
				
				var ps:PHPRPC_Client = new PHPRPC_Client(URL,["sayHello","sayGoodBye","showUser","getUser"]);
				
				ps.sayGoodBye();//调用sayGoodBye
				
				//调用sayHello
				ps.sayHello("fw",function(result:*){
					Alert.show(result);
				});
				
				//调用showUser 参数为一个FLEX对象 会自动转化
				var user:User = new User();
				user.name="fw";
				user.password = "123";
				ps.showUser(user);
				
				//调用getUser 自动将返回的服务器端User对象转为json对象
				ps.getUser(function(result:*){
					Alert.show(result.name);
				});
			} 
		]]>
	</mx:Script>
		
	
</mx:Application>

   可以发现,几乎和JS调用的代码完全一样,只不过由JSON对象变成了FLEX对象,同样地,无需配置,只需要解压之前下载的针对AS3.0的版本的压缩文件,将里面的"PHPPRC_AS3.swc"添加进构建路径即可.

   一点小小的遗憾是在PHPRPC_Client.as的源代码中对应服务URL和函数名数组的属性都是private的,因此除非修改PHPRPC_Client的源代码加上setter和getter对应的属性,否则将无法以MXML标签的形式使用PHPRPC_Client.不过话说回来通过AS来使用PHPRPC_Client本来就非常简单......