http://jonniespratley.com/2008/10/02/adobe-flex-using-xml-rpc/
Adobe Flex —— Using XML-RPC
在程序员准备用Flex来创建网络应用程序或用Air来创建桌面应用程序时,经常需要更好的利用这些程序。比如说,如果你刚为SandKicker 服装建好一个产品管理器,这时老板看你已经把这么困难的任务都完成了,于是就要你为他开发另一个程序,不是为公司,而是为他自己,为他那个已经写了好几年的博客。
老板说他的博客是WordPress自托管的,听到这你的脑海里蹦出一大堆的想法:该用什么来连接WordPress?是不是可以创建一个定制的远程调用脚本以便通过amfphp来请求调用WordPress呢?…不对不对,这些都要花上很长时间,ASAP,这才是老板想要的。你迅速将思绪拉回现实并告诉他你已经知道该怎么做了。
当你回到办公桌前开始搜索资料,希望能找到些用ActionScript来链接到XML-RPC服务器的东西,这时你恰好看到了由GOOGLE CODE主办的这个程序库。
然后你就下载了它并在程序中开源。然后该做些什么呢…
配置:
·Flex 3
·WordPress
·XML-RPC 库
设置:
如果你还没有将xml-rpc库的源代码放入Flex程序的源文件夹,那么先把这个完成,然后你就可以快速安装这个程序库了,趁软件还没有更新。
Up and Running
安装完毕,运行
要接通并运行这个程序,我们首先要创建一个可以处理XML-RPC对象的服务变量,应用程序创建完成后还要创建一个服务变量可用的新的XML-RPC对象,设置一些结果,默认处理程序,并指定一个终点,此时我们已经知道终点是“/xmlrpc.php”.
然后就要妥善处理结果,但是在创建出一个完整的多孔服务类前,我们只能用一个结果和默认处理程序来测试这些调用请求。经过观察还必须得抛出一些分量,这样我们才能进入这些请求的要求参数。
创建3个小函数后我们就有信心了。
下面就开始了
Essential Script
Create a new component called WordPressTester.mxml and add a script block with following code:
1: import com.jonniespratley.http.rpc.xmlrpc.XMLRPCObject;
2: import mx.utils.Base64Encoder;
3: import mx.utils.ArrayUtil;
4: import mx.collections.ArrayCollection;
5: import mx.rpc.events.ResultEvent;
6: import mx.rpc.events.FaultEvent;
7: import mx.rpc.AsyncToken;
8: import mx.controls.Alert;
9:
10: //Our data that is going to be returned
11: [Bindable] private var returnedData:ArrayCollection;
12:
13: //Our website endpoint where WordPress is installed at
14: [Bindable] private var wordpressEndpoint:String = "http://website.com";
15:
16: //Our service variable that is a xmlrpc object
17: private var service:XMLRPCObject;
18:
19: private function init():void
20: {
21: //Create a new service
22: service = new XMLRPCObject();
23:
24: //Specify the endpoint
25: service.endpoint = wordpressEndpoint;
26:
27: //We know what destination we need to access
28: service.destination = "/xmlrpc.php";
29:
30: //Set a fault handler
31: service.addEventListener( FaultEvent.FAULT, onFault );
32:
33: //And set a result handler
34: service.addEventListener( ResultEvent.RESULT, onResult );
35: }
36:
37: /*******************************************
38: * wp.getUsersBlogs
39: * @args user_name, user_pass
40: ********************************************/
41: private function getUsersBlogs():void
42: {
43: service.call("wp.getUsersBlogs", txt_username.text, txt_password.text)
44: }
45:
46: /*******************************************
47: * blogger.getUserInfo
48: * @args fake app id, user_name, user_pass
49: ********************************************/
50: private function getUserInfo():void
51: {
52: service.call( "blogger.getUserInfo", "43243423", txt_username.text, txt_password.text );
53: }
54:
55: /*******************************************
56: * blogger.getRecentPosts
57: * @args blog_ID, user_login, user_pass, num_posts
58: ********************************************/
59: private function getRecentPosts():void
60: {
61: service.call( "blogger.getRecentPosts", "43243423", txt_blogid.value,
62: txt_username.text, txt_password.text, txt_count.value );
63:
64: }
65:
66: