<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.pabloprieto.net/index.php/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
  <title>Pablo Prieto - Blog - xml-rpc</title>
  <link>http://blog.pabloprieto.net/index.php/</link>
  <description>&quot;Faire des sites web c'est pas facile tous les jours&quot;</description>
  <language>fr</language>
  <pubDate>Fri, 19 Mar 2010 06:31:23 +0100</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
  <item>
    <title>Invoquer le webservice XML/RPC de Dotclear avec Flex</title>
    <link>http://blog.pabloprieto.net/index.php/post/2007/09/24/Invoquer-le-webservice-XML/RPC-de-Dotclear-avec-Flex</link>
    <guid isPermaLink="false">urn:md5:1e27bd108ad6b0b118b5338924e251d1</guid>
    <pubDate>Mon, 24 Sep 2007 14:08:00 +0200</pubDate>
    <dc:creator>Pab.</dc:creator>
        <category>Actionscript/Flash/Flex</category>
        <category>actionscript</category><category>dotclear</category><category>flex</category><category>webservice</category><category>xml-rpc</category>    
    <description>&lt;p&gt;Voici un petit tutorial rapide pour apprendre à communiquer avec un webservice XML/RPC en Actionscript 3.&lt;/p&gt;


&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/XMLRPC&quot; hreflang=&quot;en&quot;&gt;XML/RPC&lt;/a&gt; est un protocole utilisé notamment par les principales plate-formes de blog pour permettre d'administrer ceux-ci sans devoir se connecter à l'interface d'administration. Nous allons justement dans l'exemple suivant nous connecter au webservice fourni par Dotclear pour afficher la liste des derniers billets.&lt;/p&gt;


&lt;p&gt;Dotclear implémente les principales API de blog, à savoir blogger, Movable Type et MetaWeblog. Nous allons donc pouvoir invoquer les méthodes fournies par ces 3 API. Pour info ce même exemple peut servir pour les autres plate-formes de blog comme Wordpress, qui implémente également ces API. J'ai choisi Dotclear uniquement  parce que c'est ce que j'utilise :)&lt;/p&gt;    &lt;p&gt;Avant de commencer, &lt;strong&gt;pensez à activer l'interface XML/RPC de votre blog dans l'interface d'administration&lt;/strong&gt;. Pour Dotclear cela se situe dans les paramètres du blog.&lt;/p&gt;


&lt;h3&gt;Création du projet&lt;/h3&gt;


&lt;p&gt;Coté client, la librairie qui va nous simplifier le travail s'appelle &lt;a href=&quot;http://code.google.com/p/as3-rpclib/&quot; hreflang=&quot;en&quot;&gt;As3 RPC lib&lt;/a&gt;, disponible sur Google Code.&lt;/p&gt;


&lt;p&gt;Après avoir crée un nouveau projet Flex, &lt;a href=&quot;http://code.google.com/p/as3-rpclib/downloads/list&quot; hreflang=&quot;en&quot;&gt;téléchargez la librairie&lt;/a&gt; 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 &quot;Flex Build Path&quot;, onglet &quot;Library Path&quot;, et importez le fichier SWC en cliquant sur &quot;Add SWC...&quot;.&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/flex_xmlrpc_1.png&quot; alt=&quot;Importation de la librairie As3 RPC lib&quot; /&gt;&lt;/p&gt;


&lt;h3&gt;Utilisation de l'objet XMLRPCObject&lt;/h3&gt;


&lt;p&gt;Cette librairie nous permet de créer un objet XMLRPCObject qui appelera les fonctions du webservice avec la méthode &quot;call()&quot;. L'url du webservice est précisée avec les propriétés &lt;em&gt;endpoint&lt;/em&gt; et &lt;em&gt;destination&lt;/em&gt;&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;ak33m:XMLRPCObject id=&amp;quot;blogapi&amp;quot; endpoint=&amp;quot;http://www.burnyourbrowser.net/&amp;quot; destination=&amp;quot;index.php/xmlrpc/default&amp;quot; /&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Après invocation de la méthode &quot;call()&quot;, l'évenement ResultEvent permet de réceptionner les données directement &lt;strong&gt;sous forme d'objet&lt;/strong&gt;.&lt;/p&gt;


&lt;p&gt;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.&lt;/p&gt;


&lt;p&gt;L'objet XMLRPCObject est ici instancié en MXML, mais vous pouvez évidemment le faire en actionscript.&lt;/p&gt;


&lt;p&gt;Enfin les résultats retournés sont stockés dans un ArrayCollection &quot;bindable&quot;, ce qui nous permet de mettre à jour automatiquement le DataGrid&amp;nbsp;:&lt;/p&gt;

&lt;pre&gt;
&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;
&amp;lt;mx:Application 
	xmlns:mx=&amp;quot;http://www.adobe.com/2006/mxml&amp;quot; 
	xmlns:ak33m=&amp;quot;http://ak33m.com/mxml&amp;quot; 
	layout=&amp;quot;vertical&amp;quot; 
	horizontalAlign=&amp;quot;left&amp;quot; 
	creationComplete=&amp;quot;init()&amp;quot;&amp;gt;
	
	&amp;lt;mx:Script&amp;gt;
		&amp;lt;![CDATA[
			import mx.rpc.events.FaultEvent;
			import mx.rpc.events.ResultEvent;
			import mx.collections.ArrayCollection;
		
			private var login:String = &amp;quot;******&amp;quot;;
			private var password:String = &amp;quot;******&amp;quot;;
			
			[Bindable]
			private var recentPosts:ArrayCollection;
			
			private function init():void{				
				blogapi.call(&amp;quot;mt.getRecentPostTitles&amp;quot;,&amp;quot;1&amp;quot;,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+&amp;quot;: &amp;quot;+e.fault.faultString;
			}
			
		]]&amp;gt;
	&amp;lt;/mx:Script&amp;gt;
	
	&amp;lt;ak33m:XMLRPCObject id=&amp;quot;blogapi&amp;quot; endpoint=&amp;quot;http://www.burnyourbrowser.net/&amp;quot; destination=&amp;quot;index.php/xmlrpc/default&amp;quot; /&amp;gt;
	
	&amp;lt;mx:DataGrid dataProvider=&amp;quot;{recentPosts}&amp;quot; width=&amp;quot;100%&amp;quot;&amp;gt;
		&amp;lt;mx:columns&amp;gt;
			&amp;lt;mx:DataGridColumn headerText=&amp;quot;ID&amp;quot; dataField=&amp;quot;postid&amp;quot; width=&amp;quot;30&amp;quot;/&amp;gt;
			&amp;lt;mx:DataGridColumn headerText=&amp;quot;Title&amp;quot; dataField=&amp;quot;title&amp;quot;/&amp;gt;
			&amp;lt;mx:DataGridColumn headerText=&amp;quot;Date&amp;quot; dataField=&amp;quot;dateCreated&amp;quot;/&amp;gt;
		&amp;lt;/mx:columns&amp;gt;
	&amp;lt;/mx:DataGrid&amp;gt;
	
	&amp;lt;mx:Text id=&amp;quot;errorMessage&amp;quot;/&amp;gt;
	
&amp;lt;/mx:Application&amp;gt;
&lt;/pre&gt;


&lt;p&gt;Et voilà le résultat&amp;nbsp;:&lt;/p&gt;


&lt;p&gt;&lt;img src=&quot;http://blog.pabloprieto.net/public/flex_xmlrpc_2.png&quot; alt=&quot;Affichage des derniers billets du blog avec XML/RPC&quot; /&gt;&lt;/p&gt;


&lt;p&gt;Je vous laisse continuer, en vous aidant de &lt;a href=&quot;http://www.dotclear.net/trac/wiki/DotClear/fr/Dev/XML-RPC&quot; hreflang=&quot;fr&quot;&gt;la documentation des API&lt;/a&gt;, pour vous créer votre propre interface de gestion de blog en Flex :)&lt;/p&gt;</description>
    
    
    
          <comments>http://blog.pabloprieto.net/index.php/post/2007/09/24/Invoquer-le-webservice-XML/RPC-de-Dotclear-avec-Flex#comment-form</comments>
      <wfw:comment>http://blog.pabloprieto.net/index.php/post/2007/09/24/Invoquer-le-webservice-XML/RPC-de-Dotclear-avec-Flex#comment-form</wfw:comment>
      <wfw:commentRss>http://blog.pabloprieto.net/index.php/feed/rss2/comments/31</wfw:commentRss>
      </item>
    
</channel>
</rss>