Avant de commencer, pensez à activer l'interface XML/RPC de votre blog dans l'interface d'administration. Pour Dotclear cela se situe dans les paramètres du blog.

Création du projet

Coté client, la librairie qui va nous simplifier le travail s'appelle As3 RPC lib, disponible sur Google Code.

Après avoir crée un nouveau projet Flex, téléchargez la librairie as3 RPC lib et copiez le fichier as3-rpclib.swc dans votre dossier projet. Allez ensuite dans les propriétés du projet puis dans "Flex Build Path", onglet "Library Path", et importez le fichier SWC en cliquant sur "Add SWC...".

Importation de la librairie As3 RPC lib

Utilisation de l'objet XMLRPCObject

Cette librairie nous permet de créer un objet XMLRPCObject qui appelera les fonctions du webservice avec la méthode "call()". L'url du webservice est précisée avec les propriétés endpoint et destination :

<ak33m:XMLRPCObject id="blogapi" endpoint="http://www.burnyourbrowser.net/" destination="index.php/xmlrpc/default" />

Après invocation de la méthode "call()", l'évenement ResultEvent permet de réceptionner les données directement sous forme d'objet.

Voici le code final de l'application, composée pour l'affichage d'un DataGrid et d'un texte destiné à recevoir les eventuels messages d'erreur.

L'objet XMLRPCObject est ici instancié en MXML, mais vous pouvez évidemment le faire en actionscript.

Enfin les résultats retournés sont stockés dans un ArrayCollection "bindable", ce qui nous permet de mettre à jour automatiquement le DataGrid :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application 
	xmlns:mx="http://www.adobe.com/2006/mxml" 
	xmlns:ak33m="http://ak33m.com/mxml" 
	layout="vertical" 
	horizontalAlign="left" 
	creationComplete="init()">
	
	<mx:Script>
		<![CDATA[
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.collections.ArrayCollection;
		
			private var login:String = "******";
			private var password:String = "******";
			
			[Bindable]
			private var recentPosts:ArrayCollection;
			
			private function init():void{				
				blogapi.call("mt.getRecentPostTitles","1",login,password,10);
				blogapi.addEventListener(ResultEvent.RESULT, showRecentPosts);
				blogapi.addEventListener(FaultEvent.FAULT, faultHandler);
			}
			
			private function showRecentPosts(e:ResultEvent):void{
				recentPosts = new ArrayCollection(e.result as Array);
			}
			
			private function faultHandler(e:FaultEvent):void{
				errorMessage.text = e.fault.faultCode+": "+e.fault.faultString;
			}
			
		]]>
	</mx:Script>
	
	<ak33m:XMLRPCObject id="blogapi" endpoint="http://www.burnyourbrowser.net/" destination="index.php/xmlrpc/default" />
	
	<mx:DataGrid dataProvider="{recentPosts}" width="100%">
		<mx:columns>
			<mx:DataGridColumn headerText="ID" dataField="postid" width="30"/>
			<mx:DataGridColumn headerText="Title" dataField="title"/>
			<mx:DataGridColumn headerText="Date" dataField="dateCreated"/>
		</mx:columns>
	</mx:DataGrid>
	
	<mx:Text id="errorMessage"/>
	
</mx:Application>

Et voilà le résultat :

Affichage des derniers billets du blog avec XML/RPC

Je vous laisse continuer, en vous aidant de la documentation des API, pour vous créer votre propre interface de gestion de blog en Flex :)