<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress.com" -->
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	>

<channel>
	<title>xml-rpc &amp;laquo; WordPress.com Tag Feed</title>
	<link>http://en.wordpress.com/tag/xml-rpc/</link>
	<description>Feed of posts on WordPress.com tagged "xml-rpc"</description>
	<pubDate>Sat, 05 Dec 2009 05:22:20 +0000</pubDate>

	<generator>http://en.wordpress.com/tags/</generator>
	<language>en</language>

<item>
<title><![CDATA[Retrieving blog posts from Wordpress over XML-RPC]]></title>
<link>http://homeilja.wordpress.com/2009/10/04/retrieving-blog-posts-from-wordpress-over-xml-rpc/</link>
<pubDate>Sun, 04 Oct 2009 01:13:23 +0000</pubDate>
<dc:creator>ilja</dc:creator>
<guid>http://homeilja.wordpress.com/2009/10/04/retrieving-blog-posts-from-wordpress-over-xml-rpc/</guid>
<description><![CDATA[To retrieve all the blog posts from WordPress you can use the WordPress API, which uses the XML-RPC ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>To retrieve all the blog posts from WordPress you can use the <a title="WordPress API" href="http://codex.wordpress.org/XML-RPC_wp" target="_blank">WordPress API</a>, which uses the <a title="XML-RPC protocol" href="http://www.xmlrpc.com/" target="_blank">XML-RPC protocol</a>. I will show you how this could be done in Java.</p>
<p>First, we need the <a title="Apache XML-RPC" href="http://ws.apache.org/xmlrpc/index.html" target="_blank">Apache XML-RPC</a> lib. If you use Maven, then you should insert this into your pom file:</p>
<pre class="brush: xml;">&#60;dependency&#62;
   &#60;groupId&#62;org.apache.xmlrpc&#60;/groupId&#62;
   &#60;artifactId&#62;xmlrpc-client&#60;/artifactId&#62;
   &#60;version&#62;3.1.2&#60;/version&#62;
&#60;/dependency&#62;</pre>
<p>If necessary, change the above version to a newer one. If you dont use Maven, then you should download and insert the lib to your project manually.</p>
<p>Before we start grabbing the blog posts, some initializing has to be done:</p>
<pre class="brush: java;">final XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL(&#34;https://homeilja.wordpress.com/xmlrpc.php&#34;));

final XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);</pre>
<p>Now the XmlRpcClient knows from which blog we want to retrieve our posts. Note, that you must provide the XML-RPC url of your blog. Typically you just need to set <em>/xmlrpc.php</em> at the end of your blog url.</p>
<p>Now we can interact with our WordPress installation over XML-RPC. If you want to know what methods are supported, you should look into the <em>xmlrpc.php</em> of your WordPress source. Here are all the methods from WordPress 2.8.4:</p>
<pre class="brush: php;"> // WordPress API
 'wp.getUsersBlogs'        =&#62; 'this:wp_getUsersBlogs',
 'wp.getPage'            =&#62; 'this:wp_getPage',
 'wp.getPages'            =&#62; 'this:wp_getPages',
 'wp.newPage'            =&#62; 'this:wp_newPage',
 'wp.deletePage'            =&#62; 'this:wp_deletePage',
 'wp.editPage'            =&#62; 'this:wp_editPage',
 'wp.getPageList'        =&#62; 'this:wp_getPageList',
 'wp.getAuthors'            =&#62; 'this:wp_getAuthors',
 'wp.getCategories'        =&#62; 'this:mw_getCategories',        // Alias
 'wp.getTags'            =&#62; 'this:wp_getTags',
 'wp.newCategory'        =&#62; 'this:wp_newCategory',
 'wp.deleteCategory'        =&#62; 'this:wp_deleteCategory',
 'wp.suggestCategories'    =&#62; 'this:wp_suggestCategories',
 'wp.uploadFile'            =&#62; 'this:mw_newMediaObject',    // Alias
 'wp.getCommentCount'    =&#62; 'this:wp_getCommentCount',
 'wp.getPostStatusList'    =&#62; 'this:wp_getPostStatusList',
 'wp.getPageStatusList'    =&#62; 'this:wp_getPageStatusList',
 'wp.getPageTemplates'    =&#62; 'this:wp_getPageTemplates',
 'wp.getOptions'            =&#62; 'this:wp_getOptions',
 'wp.setOptions'            =&#62; 'this:wp_setOptions',
 'wp.getComment'            =&#62; 'this:wp_getComment',
 'wp.getComments'        =&#62; 'this:wp_getComments',
 'wp.deleteComment'        =&#62; 'this:wp_deleteComment',
 'wp.editComment'        =&#62; 'this:wp_editComment',
 'wp.newComment'            =&#62; 'this:wp_newComment',
 'wp.getCommentStatusList' =&#62; 'this:wp_getCommentStatusList',

 // Blogger API
 'blogger.getUsersBlogs' =&#62; 'this:blogger_getUsersBlogs',
 'blogger.getUserInfo' =&#62; 'this:blogger_getUserInfo',
 'blogger.getPost' =&#62; 'this:blogger_getPost',
 'blogger.getRecentPosts' =&#62; 'this:blogger_getRecentPosts',
 'blogger.getTemplate' =&#62; 'this:blogger_getTemplate',
 'blogger.setTemplate' =&#62; 'this:blogger_setTemplate',
 'blogger.newPost' =&#62; 'this:blogger_newPost',
 'blogger.editPost' =&#62; 'this:blogger_editPost',
 'blogger.deletePost' =&#62; 'this:blogger_deletePost',

 // MetaWeblog API (with MT extensions to structs)
 'metaWeblog.newPost' =&#62; 'this:mw_newPost',
 'metaWeblog.editPost' =&#62; 'this:mw_editPost',
 'metaWeblog.getPost' =&#62; 'this:mw_getPost',
 'metaWeblog.getRecentPosts' =&#62; 'this:mw_getRecentPosts',
 'metaWeblog.getCategories' =&#62; 'this:mw_getCategories',
 'metaWeblog.newMediaObject' =&#62; 'this:mw_newMediaObject',

 // MetaWeblog API aliases for Blogger API
 // see http://www.xmlrpc.com/stories/storyReader$2460
 'metaWeblog.deletePost' =&#62; 'this:blogger_deletePost',
 'metaWeblog.getTemplate' =&#62; 'this:blogger_getTemplate',
 'metaWeblog.setTemplate' =&#62; 'this:blogger_setTemplate',
 'metaWeblog.getUsersBlogs' =&#62; 'this:blogger_getUsersBlogs',

 // MovableType API
 'mt.getCategoryList' =&#62; 'this:mt_getCategoryList',
 'mt.getRecentPostTitles' =&#62; 'this:mt_getRecentPostTitles',
 'mt.getPostCategories' =&#62; 'this:mt_getPostCategories',
 'mt.setPostCategories' =&#62; 'this:mt_setPostCategories',
 'mt.supportedMethods' =&#62; 'this:mt_supportedMethods',
 'mt.supportedTextFilters' =&#62; 'this:mt_supportedTextFilters',
 'mt.getTrackbackPings' =&#62; 'this:mt_getTrackbackPings',
 'mt.publishPost' =&#62; 'this:mt_publishPost',

 // PingBack
 'pingback.ping' =&#62; 'this:pingback_ping',
 'pingback.extensions.getPingbacks' =&#62; 'this:pingback_extensions_getPingbacks',

 'demo.sayHello' =&#62; 'this:sayHello',
 'demo.addTwoNumbers' =&#62; 'this:addTwoNumbers'</pre>
<p>We first have to use the method <em>wp.getUsersBlogs</em>, to get all blogs of the user:</p>
<pre class="brush: java;">final Object[] params = { new String(&#34;myName&#34;), new String(&#34;myPassword&#34;) };

final Object[] obj = (Object[]) client.execute(&#34;wp.getUsersBlogs&#34;, params);

for (final Object o : obj) {
   final Map m = (Map) o;
   final boolean isAdmin = (Boolean) m.get(&#34;isAdmin&#34;);
   final String url = (String) m.get(&#34;url&#34;);
   final String blogId = (String) m.get(&#34;blogid&#34;);
   final String blogName = (String) m.get(&#34;blogName&#34;);
   final String xmlRpcUrl = (String) m.get(&#34;xmlrpc&#34;);
}</pre>
<p>As you can see, we must provide the account name and password of the blog. The interesting part of the retrieved data is the<em> blogId</em>, as this is needed to retrieve the posts from our blog.</p>
<p>Ok, lets start the grabbing:</p>
<pre class="brush: java;">final Object[] params = { blogId, new String(&#34;myName&#34;), new String(&#34;myPassword&#34;), 9999 };

final Object[] obj = (Object[]) client.execute(&#34;metaWeblog.getRecentPosts&#34;, params);

for (final Object o : obj) {
   final Map m = (Map) o;
   final String postid = (String) m.get(&#34;postid&#34;);
   final String mt_allow_comment = (String) m.get(&#34;mt_allow_comment&#34;);
   final String permaLink = (String) m.get(&#34;permaLink&#34;);
   final String post_status = (String) m.get(&#34;post_status&#34;);
   final String link = (String) m.get(&#34;link&#34;);
   final String mt_excerpt = (String) m.get(&#34;mt_excerpt&#34;);
   final String userid = (String) m.get(&#34;userid&#34;);
   final String mt_text_more = (String) m.get(&#34;mt_text_more&#34;);
   final int mt_allow_pings = (Integer) m.get(&#34;mt_allow_pings&#34;);
   final String mt_keywords = (String) m.get(&#34;mt_keywords&#34;);
   final String title = (String) m.get(&#34;title&#34;);
   final Date date_created_gmt = (Date) m.get(&#34;date_created_gmt&#34;);
   final String wp_password = (String) m.get(&#34;wp_password&#34;);
   final String description = (String) m.get(&#34;description&#34;);
   final Date dateCreated = (Date) m.get(&#34;dateCreated&#34;);
   final Object[] categories = (Object[]) m.get(&#34;categories&#34;);
   for (final Object cat : categories) {
      final String category = (String) cat;
   }
   final String wp_author_id = (String) m.get(&#34;wp_author_id&#34;);
   final String wp_slug = (String) m.get(&#34;wp_slug&#34;);
   final String wp_author_display_name = (String) m.get(&#34;wp_author_display_name&#34;);
}</pre>
<p>Thats it. If you wonder what the <em>9999</em> means in the code: With this number you can tell WordPress how many of your latest posts you want to grab. So if you want to grab all your posts, then you have to give it a big number. <em>9999</em> should be ok in most cases.</p>
<div id="_mcePaste" style="overflow:hidden;position:absolute;left:-10000px;top:1799px;width:1px;height:1px;">
<pre>
<pre>new String("myName")</pre>
</pre>
</div>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[XML-RPC]]></title>
<link>http://austinnoronha.wordpress.com/2009/09/08/xml-rpc/</link>
<pubDate>Tue, 08 Sep 2009 19:16:31 +0000</pubDate>
<dc:creator>Austin</dc:creator>
<guid>http://austinnoronha.wordpress.com/2009/09/08/xml-rpc/</guid>
<description><![CDATA[XML-RPC and XML-RPC Server Classes What is XML-RPC? Quite simply it is a way for two computers to co]]></description>
<content:encoded><![CDATA[XML-RPC and XML-RPC Server Classes What is XML-RPC? Quite simply it is a way for two computers to co]]></content:encoded>
</item>
<item>
<title><![CDATA[Tecnologia a Servi&ccedil;o da Informa&ccedil;&atilde;o In&uacute;til]]></title>
<link>http://wedesigner.wordpress.com/2009/09/06/tecnologia-a-servio-da-informao-intil/</link>
<pubDate>Sun, 06 Sep 2009 09:49:35 +0000</pubDate>
<dc:creator>wedesigner</dc:creator>
<guid>http://wedesigner.wordpress.com/2009/09/06/tecnologia-a-servio-da-informao-intil/</guid>
<description><![CDATA[É Hoje implementei um sistema de postagens múltiplas em meu site. A algum tempo baixei um tal de Win]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>É Hoje implementei um sistema de postagens múltiplas em meu site.</p>
<p>A algum tempo baixei um tal de <strong>Windows Live Writer</strong> mais até ontem não tinha me preocupado em saber pra que servia.</p>
<p>Lendo notícias em sites como sempre faço, descobri que poderia ser possível postar notícias no <strong>Joomla</strong> utilizando esta ferramenta da Microsoft. Mais que isso, seria possível postar em múltiplos sites e blogs simultaneamente, economizado muito tempo.</p>
<p>Esse sistema utiliza o <a href="http://pt.wikipedia.org/wiki/XML-RPC" target="_blank"><strong>XML-RPC</strong></a> que faz a ligação do editor com o <strong>Joomla</strong> ou outros tipos de blogs.</p>
<p>O plug-in que estou utilizando chama-se <strong>XML-RPC &#8211; metaWeblog API</strong>,<strong> </strong>infelizmente este plug-in conta com 1 bug na parte de configuração de hora de postagens relacionada à dateTime.iso8601 que faz com que a data de postagem do artigo apareça no Joomla com 3 horas de diferença, ou seja, ainda não descobri como fazer o plug-in entender o fuso-horário gmt-3 que é o horário brasileiro.</p>
<p>O Sistema de <strong>múltiplas postagens</strong> está funcionando normalmente, o único trabalho adicional que tenho é acessar a administração do site e mudar o horário em 3 horas ^^</p>
<p>Utilizarei o <strong>Windows Live Writer</strong> para postar minhas notícias. Essas Notícias poderão ser acompanhadas em 3 sites distintos porém com o mesmo conteúdo. São eles:</p>
<p>No meu Site oficial: <a href="http://www.wedsigner.com.br">http://www.wedsigner.com.br</a></p>
<p>No meu Espaço: <a title="http://bolodecenora.spaces.live.com" href="http://bolodecenora.spaces.live.com">http://bolodecenora.spaces.live.com</a></p>
<p>E no meu Blog: <a title="http://disbarara.blogspot.com/" href="http://disbarara.blogspot.com/">http://disbarara.blogspot.com/</a></p>
<p>E agora tbm no WordPress ^^ <a title="http://wedesigner.wordpress.com" href="http://wedesigner.wordpress.com">http://wedesigner.wordpress.com</a></p>
<p>Além das Postagens, Links para as Notícias serão postadas no meu <a href="http://twitter.com/wedesigner" target="_blank"><strong>Twitter</strong></a> junto com o Título.</p>
<p>Continuem Acessando este site. Informação Úteis e inúteis diariamente.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Joomla Plugins]]></title>
<link>http://meghsoft.wordpress.com/2009/08/29/joomla-plugins/</link>
<pubDate>Sat, 29 Aug 2009 18:26:20 +0000</pubDate>
<dc:creator>meghsoft</dc:creator>
<guid>http://meghsoft.wordpress.com/2009/08/29/joomla-plugins/</guid>
<description><![CDATA[Authentication (Joomla!, LDAP, OpenID, GMail) The “Authentication” plugins add different form of use]]></description>
<content:encoded><![CDATA[Authentication (Joomla!, LDAP, OpenID, GMail) The “Authentication” plugins add different form of use]]></content:encoded>
</item>
<item>
<title><![CDATA[Umständlichste addition]]></title>
<link>http://schwerdtfegr.wordpress.com/2009/08/27/umstandlichste-addition/</link>
<pubDate>Thu, 27 Aug 2009 23:52:12 +0000</pubDate>
<dc:creator>Nachtwaechter</dc:creator>
<guid>http://schwerdtfegr.wordpress.com/2009/08/27/umstandlichste-addition/</guid>
<description><![CDATA[Als ich mir heute mal die API für wördpress über XML-RPC angeschaut habe, da habe ich die wohl umstä]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Als ich mir heute mal die API für wördpress über XML-RPC angeschaut habe, da habe ich die wohl umständlichste und langsamste metode gefunden, zwei zahlen miteinander zu addieren &#8212; man verwende hierfür einfach eine testfunktion in wördpress. Eine implementation in Python 2.6 sieht so aus: (In Python 3 heißt das modul anders.)</p>
<pre>
import xmlrpclib
URL = 'URL zur xmlrpc.php eines WP-Blogs'</code>

def inefficient_add(a, b):
  xmlrpc = xmlrpclib.ServerProxy(URL)
  return xmlrpc.demo.addTwoNumbers(a, b)

if __name__ = '__main__':
  print inefficient_add(1, 1)
</pre>
<p>Natürlich muss die URL gegen eine richtige ausgetauscht werden, wenn man mal wieder so richtig auf die einsicht warten will, dass eins und eins eben zwei ergibt.</p>
<p>Übrigens beschäftige ich mich gerade mit so etwas, weil ich mich gerade mal wieder darüber aufrege, dass es keinen einziges brauchbares blog-programm für linux gibt &#8212; deshalb muss ich mal wieder selbst ein bisschen häcken. Als ob man nix besseres mit seinem leben zu tun hätte&#8230;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Django and Web Services]]></title>
<link>http://fragmentsofcode.wordpress.com/2009/08/02/django-and-web-services/</link>
<pubDate>Mon, 03 Aug 2009 00:17:57 +0000</pubDate>
<dc:creator>David Chandek-Stark</dc:creator>
<guid>http://fragmentsofcode.wordpress.com/2009/08/02/django-and-web-services/</guid>
<description><![CDATA[Or, developing Django data applications without a database. In recent months I have been working int]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><strong>Or, developing Django data applications without a database.</strong></p>
<p>In recent months I have been working intensively on a user interface to a data store that lives behind a web services API.  While this might not be considered a natural fit for Django, the smart de-coupling of URLs, views, and templates from data models means that the former retain their value even without the latter.  And hey, it&#8217;s all just Python, right?  Django models are just one way to handle data in your application, albeit a very convenient and powerful one when dealing with an RDBMS.</p>
<p>Before working on this project, I had already developed two other Django apps based on data sources accessed via HTTP, both of which were read-only, which of course made things quite a bit simpler.  The first of these was an XML-RPC interface (built with <a href="https://launchpad.net/django-xmlrpc">django_xmlrpc</a>, Python&#8217;s standard xmlrpclib module and <a href="http://pypi.python.org/pypi/python-ldap/">python-ldap</a>) to an LDAP directory.  I manage user and group information for a number of staff applications, including Django itself, for which it is very useful to draw upon a central source of personnel data.  The Django-based service provides convenient methods for common operations while hiding the complexities of LDAP connections and search queries.</p>
<p>The second app dealt with requests to web services of a library catalog which return content in a custom XML format.  Since only HTTP GET requests were required, I used Python&#8217;s standard urllib and urllib2 modules for the request/response handling, and <a href="http://codespeak.net/lxml/">lxml.etree</a> for the XML parsing and XSLT application (see also my <a href="http://fragmentsofcode.wordpress.com/2009/03/13/lxml-makes-xml-almost-fun/">previous post on the virtues of lxml</a>).</p>
<p>The current project, as opposed to the previous two, involves both read and write actions on the backend data store.  Also, because the web services API implements a REST architecture, the &#8220;client&#8221; code I was tasked with has to support a wider range of HTTP request methods (not just GET and POST) and responses.  Finally, the client code stack includes a full-blown user interface (the ultimate purpose of the app) for managing the backend data.  In my next post, I&#8217;ll talk about how I broke down the problem.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Blogga med Drivel]]></title>
<link>http://mathsgothe.wordpress.com/2009/07/14/blogga-med-drivel/</link>
<pubDate>Tue, 14 Jul 2009 19:18:53 +0000</pubDate>
<dc:creator>Maths</dc:creator>
<guid>http://mathsgothe.wordpress.com/2009/07/14/blogga-med-drivel/</guid>
<description><![CDATA[Ett alternativ till att logga in på sin blogg när man ska skriva något, är att skaffa sig en klient ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Ett alternativ till att logga in på sin blogg när man ska skriva något, är att skaffa sig en klient där man kan skriva inläggen och sedan ladda upp dem när man är klar. Ska man inte ha med några bilder eller redan har lagt upp dem, så är det här ett smidigt sätt. Jag testar här ett program som heter <a href="http://dropline.net/past-projects/drivel-blog-editor/">Drivel</a>.</p>
<p><!--more Läs hela inlägget här ...--><br />
<!-- ubuntu,blogga,drivel,atom,xml-rpc --></p>
<p>För att det här ska fungera, måste man på sin blogg ha aktiverat möjligheten att ladda upp med Atom Publishing Protocol eller XML-RPC. I WordPress hittar man den funktionen under Inställningar &#8211; Skriva. Markera de två rutorna och det är klart. Det verkar dock som om det på wordpress.com inte fungerar på det sättet. Där är det aktiverat som standard, för alternativet finns inte där. Jag hittar det i alla fall inte.</p>
<p>Du installerar Drivel med hjälp av Pakethanteraren. Paketet du letar efter heter helt enkelt <strong>drivel</strong>. Efter installationen hittar du det under menyn Program &#8211; Internet &#8211; Dagboksredigeraren Drivel.</p>
<p><img src="http://mathsgothe.wordpress.com/files/2009/07/drivel1.png" alt="" /></p>
<p>I inloggningsfönstret ska man ange följande uppgifter.</p>
<ul>
<li>Namnet på kontot</li>
<li>Lösenordet</li>
<li>Vilken slags dagbok det handlar om. WordPress fanns inte med, men det fungerade med Moveable Type.</li>
<li>Adressen till bloggen. Antagligen http://dinblogg/xmlrpc.php. Det är alltså adressen till filen xmlrpc.php som är intressant. Den ligger antagligen direkt under din bloggadress.
</ul>
<p>Klicka sedan på Logga in. Du får nu upp fönstret där du ska skriva ditt inlägg. Det enklaste är att bara skriva ett ämne, texten och posta. Men det går också att välja vilken kategori inlägget ska hamna i.</p>
<p><img src="http://mathsgothe.wordpress.com/files/2009/07/drivel3b.png" alt="" /></p>
<p>Det går bra klicka på <strong>Arbeta frånkopplat</strong>. Du får då upp samma ruta att skriva i, men istället för en knappa att post så finns det <strong>Spara utkast</strong>. Man sparar då utkastet i lämplig mapp. När man öppnar Drivel igen, hittar man sina utkast under Dagbok &#8211; Senaste utkast.</p>
<p>Den enda riktiga nackdelen jag upptäckt så här långt, är att man inte kan lägga till etiketter, taggar. </p>
<p>Jag kan nämna att jag har testat <a href="http://flukkost.nu/blog/tomboyblogposter/">Tomboy Blogposter</a>, som finns i Ubuntus Pakethanterare. Där är det ännu enklare att skriva och ladda upp, men det finns en del formateringar, möjligheten att välja kategori och länkar som jag saknar.</p>
<p>Andra program man kan hitta i Pakethanteraren är <a href="http://www.gnome.org/~seth/gnome-blog/">Gnome Blog</a> och <a href="http://ljcharm.sourceforge.net/">Charm</a>. De har jag ännu inte testat.</p>
<p><a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/se/"><img alt="Creative Commons License" style="border-width:0;" src="http://i.creativecommons.org/l/by-sa/2.5/se/88x31.png" /></a><br />Det här verket av <span>Maths G&#246;the</span> är licensierat under <a rel="license" href="http://creativecommons.org/licenses/by-sa/2.5/se/">Creative Commons Erk&#228;nnande-Dela Lika 2.5 Sverige License</a>.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Formats are like trees, microbes and cockroaches Scripting News]]></title>
<link>http://ms12.wordpress.com/2009/06/05/formats-are-like-trees-microbes-and-cockroaches-scripting-news/</link>
<pubDate>Fri, 05 Jun 2009 22:47:54 +0000</pubDate>
<dc:creator>ms12</dc:creator>
<guid>http://ms12.wordpress.com/2009/06/05/formats-are-like-trees-microbes-and-cockroaches-scripting-news/</guid>
<description><![CDATA[Image via Wikipedia Home &gt; Archive &gt;  2009 &gt;  June &gt;  5 Formats are like trees, microbes]]></description>
<content:encoded><![CDATA[Image via Wikipedia Home &gt; Archive &gt;  2009 &gt;  June &gt;  5 Formats are like trees, microbes]]></content:encoded>
</item>
<item>
<title><![CDATA[Retornar arrays con NuSOAP]]></title>
<link>http://dokeoslatinoamerica.wordpress.com/2009/03/22/retornar-arrays-con-nusoap/</link>
<pubDate>Sun, 22 Mar 2009 17:59:31 +0000</pubDate>
<dc:creator>ywarnier</dc:creator>
<guid>http://dokeoslatinoamerica.wordpress.com/2009/03/22/retornar-arrays-con-nusoap/</guid>
<description><![CDATA[Christian escribió un artículo hace unos días sobre la manera de usar NuSOAP para crear un servicio ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>Christian escribió un artículo hace unos días sobre <a href="http://dokeoslatinoamerica.wordpress.com/2009/03/16/servicios-web-con-php-utilizando-la-herramienta-nusoap/">la manera de usar NuSOAP para crear un servicio web</a>. El artículo describe en detalles el procedimiento. No obstante, probar de retornar un arreglo es un trabajo bastante complejo en NuSOAP, o por lo menos esta mal documentado. Una excelente referencia (en Inglés) sobre el tema se puede encontrar en el blog de <a href="http://www.lyingonthecovers.net/?p=39">Lyingonthecovers</a>, pero el artículo faltaba (he puesto un comentario ahí) una noción importante que es que NuSOAP debe tener un &#8216;return&#8217; =&#62; &#8216;xsd:Array&#8217; en su método register() para retornar el formato correcto.</p>
<p>En este artículo, revisaremos como retornar arreglos.</p>
<h2>Retornar arreglos simples</h2>
<p>Primero, imaginamos, como en el artículo en Inglés de Lyingonthecovers, que queremos hacer un servicio web que retorna, en el caso de Dokeos, detalles sobre un curso.</p>
<p>La función que se encargar de recojer la información se llamará getCourseDetails(), tomará solo un parámetro  tipo string en entrada (para parametros complejos, ver <a href="http://dokeoslatinoamerica.wordpress.com/2009/03/16/servicios-web-con-php-utilizando-la-herramienta-nusoap/">el ejemplo de Christian</a>) y retornará un arreglo del tipo siguiente:</p>
<blockquote><p>Array(</p>
<p style="padding-left:30px;">['code'] =&#62; &#8216;ABC&#8217;,</p>
<p style="padding-left:30px;">['title'] =&#62; &#8216;English alphabet&#8217;,</p>
<p style="padding-left:30px;">['url'] =&#62; &#8216;http://www.example.com/ABC&#8217;,</p>
<p style="padding-left:30px;">['teacher'] =&#62; &#8216;Yannick Warnier&#8217;,</p>
<p style="padding-left:30px;">['language'] =&#62; &#8216;english&#8217;</p>
<p>)</p></blockquote>
<p>Hemos definido nuestras necesidades, ahora vamos más adelante y registramos el servicio mismo y sus tipos de datos:</p>
<blockquote><p>$server = new soap_server();</p>
<p>$server-&#62;configureWSDL(&#8216;WSCourse&#8217;, &#8216;urn:WSCourse&#8217;);</p>
<p>// definimos el tipo complejo (arreglo asociativo, =&#8217;struct&#8217;) de detalles de curso</p>
<p>$server-&#62;wsdl-&#62;addComplexType(<br />
&#8216;courseDetails&#8217;,<br />
&#8216;complexType&#8217;,<br />
&#8217;struct&#8217;,<br />
&#8216;all&#8217;,<br />
&#8221;,<br />
array(<br />
&#8216;name&#8217;=&#62;&#8217;code&#8217;  , &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;title&#8217;  , &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;url&#8217;    , &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;teacher&#8217;, &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;language&#8217;,'type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
)<br />
);</p></blockquote>
<p>Por favor apunten que declaramos un tipo, pero no hay ninguna relación, al nivél de esta declaración, entre el tipo y un método. Este tipo podrá ser reutilizado para otros métodos también.</p>
<blockquote><p>// Registramos el método y su parámetro de entrada<br />
$server-&#62;register(&#8216;getCourseDetails&#8217;,           // nombre método<br />
array(&#8216;username&#8217; =&#62; &#8216;xsd:string&#8217;),            //  parametros entrantes al servicio<br />
array(&#8216;return&#8217; =&#62; &#8216;tns:courseDetails&#8217;),     // valor(es) retornado(s)<br />
&#8216;urn:WSCourse&#8217;,                                            // namespace (espacio de nombre)<br />
&#8216;urn:WSCourse#getCourseDetails&#8217;,         // acción SOAP<br />
&#8216;rpc&#8217;,                                                                 // estílo<br />
&#8216;encoded&#8217;,                                                       // tipo de uso<br />
&#8216;This service returns a list of courses&#8217;    // documentación<br />
);</p></blockquote>
<p>En este caso, usamos directamente un &#8217;struct&#8217; como valor de retorno. Usamos el marcador &#8216;tns:&#8217; (probablemente Type NameSpace o algo así) para decir que es un tipo complejo definido por otro lado, y definimos que tipo exactamente queremos usar.</p>
<p>Esto es lo que debería ocurir y, para este caso (no verificado), tal vez funcionaría. <em>Si no funciona</em>, <em>prueben remplazar tns:courseDetails por xsd:Array</em>, simplemente (vemos más abajo casos probados).</p>
<p>En el caso un poco más complejo en que tenga que devolver un arreglo de estos courseDetails, como hago?</p>
<h2>Arreglos de arreglos</h2>
<p>Una estructura a dos niveles no se puede definir en solo una definición de ComplexType. En sí, se tiene que definir cada nivel como un ComplexType:</p>
<blockquote><p>$server-&#62;wsdl-&#62;addComplexType(<br />
&#8216;courseDetails&#8217;,<br />
&#8216;complexType&#8217;,<br />
&#8217;struct&#8217;,<br />
&#8216;all&#8217;,<br />
&#8221;,<br />
array(<br />
&#8216;name&#8217;=&#62;&#8217;code&#8217;  , &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;title&#8217;  , &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;url&#8217;    , &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;teacher&#8217;, &#8216;type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
&#8216;name&#8217;=&#62;&#8217;language&#8217;,'type&#8217;=&#62;&#8217;xsd:string&#8217;,<br />
)<br />
);</p></blockquote>
<p>Nada cambia para esta primera parte. Ahora definimos el arreglo que va a contener estos structs:</p>
<blockquote><p>$server-&#62;wsdl-&#62;addComplexType(<br />
&#8216;courseList&#8217;,<br />
&#8216;complexType&#8217;,<br />
&#8216;array&#8217;,<br />
&#8221;,<br />
&#8216;SOAP-ENC:Array&#8217;,<br />
array(),<br />
array(<br />
array(&#8216;ref&#8217;=&#62;&#8217;SOAP:ENC:arrayType&#8217;,<br />
&#8216;wsdl:arrayType&#8217;=&#62;&#8217;tns:courseDetails[]&#8216;)<br />
),<br />
&#8216;tns:courseDetails&#8217;<br />
);</p></blockquote>
<p>Bueno, hay mucho que todavía no hemos detallado ahí, pero no es directamente el objetivo de este artículo. Una cosa es importante: esto es la forma de declarar un arreglo (no asociativo, es decir con indices numéricos unicamente) del ComplexType <em>courseDetails</em>.</p>
<p>Una vez que tenemos esto listo, la lógica nos haría pensar que simplemente debería registrar este tipo complejo en mi servicio web:</p>
<blockquote><p>// Registramos el método y su parámetro de entrada<br />
$server-&#62;register(&#8216;getCourseDetails&#8217;,           // nombre método<br />
array(&#8216;username&#8217; =&#62; &#8216;xsd:string&#8217;),            //  parametros entrantes al servicio<br />
array(&#8216;return&#8217; =&#62; &#8216;tns:courseList&#8217;),          // valor(es) retornado(s)<br />
&#8216;urn:WSCourse&#8217;,                                            // namespace (espacio de nombre)<br />
&#8216;urn:WSCourse#getCourseDetails&#8217;,         // acción SOAP<br />
&#8216;rpc&#8217;,                                                                 // estílo<br />
&#8216;encoded&#8217;,                                                       // tipo de uso<br />
&#8216;This service returns a list of courses&#8217;    // documentación<br />
);</p></blockquote>
<p>&#8230; y ahí es donde perdimos horas buscando. En realidad, parece que hay algo malo ahí, en la forma en que NuSOAP (a lo menos versión de Agosto de 2008) retorna este valor, que es incorrecto. Resulta que el cliente SOAP de PHP5 no entiende el valor retornado. Ni para este arreglo de structs, ni para el struct mismo.</p>
<h2>Abandonar la definición de tipos complejos</h2>
<p>La solución es de abandonar la idea de definir el tipo de valor retornado, y simplemente usar <strong>xsd:Array</strong> como valor de retorno:</p>
<blockquote><p>// Registramos el método y su parámetro de entrada<br />
$server-&#62;register(&#8216;getCourseDetails&#8217;,           // nombre método<br />
array(&#8216;username&#8217; =&#62; &#8216;xsd:string&#8217;),            //  parametros entrantes al servicio<br />
array(&#8216;return&#8217; =&#62; &#8216;xsd:Array&#8217;),          // valor(es) retornado(s)<br />
&#8216;urn:WSCourse&#8217;,                                            // namespace (espacio de nombre)<br />
&#8216;urn:WSCourse#getCourseDetails&#8217;,         // acción SOAP<br />
&#8216;rpc&#8217;,                                                                 // estílo<br />
&#8216;encoded&#8217;,                                                       // tipo de uso<br />
&#8216;This service returns a list of courses&#8217;    // documentación<br />
);</p></blockquote>
<p>No hay lógica ahí, es cierto, pero a lo menos espero que les ayudarán. Me estoy comunicando con los desarrolladores de NuSOAP para averiguar el tema.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[APIs Gone Wild]]></title>
<link>http://andrewpeart.wordpress.com/2009/03/02/apis-gone-wild/</link>
<pubDate>Mon, 02 Mar 2009 22:34:17 +0000</pubDate>
<dc:creator>andrewpeart</dc:creator>
<guid>http://andrewpeart.wordpress.com/2009/03/02/apis-gone-wild/</guid>
<description><![CDATA[I just checked out http://mashery.com and was thoroughly impressed with their API management tools. ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>I just checked out http://mashery.com and was thoroughly impressed with their API management tools. From my perspective, being able to offload limiting, reporting and access management into the cloud is amazing. I haven&#8217;t gotten through all the details yet and one big question still remains&#8230; As the demand on my mashery service increases (or decreases), how will I dynamically adjust the resources at the edge of my app?</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[ vimblog.vim: publicar en wordpress.com fácilmente]]></title>
<link>http://mbpfernand0.wordpress.com/2009/02/13/vimblogvim-publicar-en-wordpresscom-facilmente/</link>
<pubDate>Fri, 13 Feb 2009 15:15:36 +0000</pubDate>
<dc:creator>mbpfernand0</dc:creator>
<guid>http://mbpfernand0.wordpress.com/2009/02/13/vimblogvim-publicar-en-wordpresscom-facilmente/</guid>
<description><![CDATA[Uno de los motivos para mudarme a este sitio era disponer de una interfaz XML-RPC: no me gusta edita]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>
Uno de los motivos para mudarme a este sitio era disponer de una interfaz <a href="http://www.xmlrpc.com/">XML-RPC</a>: no me gusta editar con el navegador (se cuelga, se corta la sesión, &#8230;). En mi búsqueda encontré muchos programitas para publicar que utilizan ventanas.</p>
<p>Eso está bien, pero tampoco me gusta mucho: quiero editar un fichero de texto con <a href="http://www.vim.org/">Vim</a> porque no necesito más, y luego poderlo enviar con una interfaz también textual. Buscando por ahí encontré dos soluciones: <a href="http://www.vim.org/scripts/script.php?script_id=1953">vimpress</a> y <a href="http://www.vim.org/scripts/script.php?script_id=2030">vimblog</a>.</p>
<p>En principio era más favorable al primero, porque usa Python y estoy más acostumbrado a ese lenguaje pero rápidamente descubrí que tenía muy pocas primitivas y que el trabajo iba a ser mayor así que me decanté por vimblog (algunos <a href="http://www.flickr.com/search/?q=vim&#38;w=36867590@N00">pantallazos</a>).</p>
<p>Aún así, el mundo es imperfecto: su autor no había incluido la posibilidad de añadir etiquetas a una entrada, que es algo que a mi me parece importante, así que me puse manos a la obra para añadirlo: en plan chapuzas, buscando líneas de código que se parecen a lo que yo quería hacer (esencialmente, modificando el código correspondiente a las categorías) y copiando y pegando, pero parece que funciona.</p>
<p>Como persona educada, le envié al autor, <a href="http://blog.tquadrado.com/">Pedro mg</a>, un mensaje y el código, por si le apetecía echarle un vistazo y me invitó a hacer un &#8216;fork&#8217; de su proyecto y publicarlo por mi cuenta, cosa que he hecho en <a href="http://github.com/fernand0/vimblog.vim">vimblog.vim (bis)</a> que de paso me ha hecho darle una segunda oportunidad a git con github.  </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Wordpress XML RPC Ping List ]]></title>
<link>http://adisetiya.wordpress.com/2009/02/03/wordpress-xml-rpc-ping-list/</link>
<pubDate>Tue, 03 Feb 2009 07:55:26 +0000</pubDate>
<dc:creator>otakbocor</dc:creator>
<guid>http://adisetiya.wordpress.com/2009/02/03/wordpress-xml-rpc-ping-list/</guid>
<description><![CDATA[Ibarat sebuah benda, tidak akan pernah dilihat jika tidak ada cahaya yang memantul dari benda ke mat]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p><img class="alignleft" src="http://tbn0.google.com/images?q=tbn:epvw6XWwyG82rM:http://www.sajithmr.com/wp-content/uploads/2008/04/wordpress-logo.png" alt="wordpress" width="90" height="86" />Ibarat sebuah benda, tidak akan pernah dilihat jika tidak ada cahaya yang memantul dari benda ke mata kita. Logis bukan? Hal yang sama diterapkan pada blog. Jika tidak ada &#8220;cahaya&#8221; dalam suatu blog, maka blog itu, sebagus apapun isinya, seindah apapun bahasanya, selucu apapun guyonannya, tetap saja tidak akan &#8220;terlihat&#8221;. Hal yang dianut oleh pelajaran SEO.<!--more--></p>
<p style="text-align:left;">WordPress, adalah sebuah CMS multiplatform dan multiguna yang sudah terintregrasi SEO yang handal. Salah satunya platform <a href="http://en.wikipedia.org/wiki/XML-RPC">XML RPC</a>. Platform sederhana yang berfungsi memancarkan &#8220;cahaya&#8221; blog ke dalam mesin pencari.<br />
<img class="aligncenter" src="http://static.userland.com/images/XML-RPC/xmlrpc.jpg" alt="xml-rpc&#60;b&#60;img src=" width=" mce_src=" height="211" /><br />
Tidak&#8230;<br />
Anda salah jika mengira saya akan menjelaskan cara kerjanya. Berikut ini list dari berbagai pinger service yang ada. Cukup banyak. Jika anda pengguna skrip wordpress (bukan wordpress.com). Silahkan di ADMIN PANEL &#62;&#62; SETTING &#62;&#62; WRITING.</p>
<p>Masukkan kode XML RPC berikut ke colomnya.<br />
<code>http://1470.net/api/ping</p>
<p>http://a2b.cc/setloc/bp.a2b</p>
<p>http://api.feedster.com/ping</p>
<p>http://api.moreover.com/RPC2</p>
<p>http://api.moreover.com/ping</p>
<p>http://api.mw.net.tw/RPC2</p>
<p>http://api.my.yahoo.com/RPC2</p>
<p>http://api.my.yahoo.com/rss/ping</p>
<p>http://bblog.com/ping.php</p>
<p>http://bitacoras.net/ping</p>
<p>http://blog.goo.ne.jp/XMLRPC</p>
<p>http://blog.with2.net/ping.php</p>
<p>http://blogbot.dk/io/xml-rpc.php</p>
<p>http://blogdb.jp/xmlrpc</p>
<p>http://blogdigger.com/RPC2</p>
<p>http://blogmatcher.com/u.php</p>
<p>http://blogoole.com/ping</p>
<p>http://blogoon.net/ping</p>
<p>http://blogpeople.net/servlet/weblogUpdates</p>
<p>http://blogsdominicanos.com/ping</p>
<p>http://blogsearch.google.ae/ping/RPC2</p>
<p>http://blogsearch.google.at/ping/RPC2</p>
<p>http://blogsearch.google.be/ping/RPC2</p>
<p>http://blogsearch.google.bg/ping/RPC2</p>
<p>http://blogsearch.google.ca/ping/RPC2</p>
<p>http://blogsearch.google.ch/ping/RPC2</p>
<p>http://blogsearch.google.cl/ping/RPC2</p>
<p>http://blogsearch.google.co.cr/ping/RPC2</p>
<p>http://blogsearch.google.co.hu/ping/RPC2</p>
<p>http://blogsearch.google.co.id/ping/RPC2</p>
<p>http://blogsearch.google.co.il/ping/RPC2</p>
<p>http://blogsearch.google.co.in/ping/RPC2</p>
<p>http://blogsearch.google.co.it/ping/RPC2</p>
<p>http://blogsearch.google.co.jp/ping/RPC2</p>
<p>http://blogsearch.google.co.ma/ping/RPC2</p>
<p>http://blogsearch.google.co.nz/ping/RPC2</p>
<p>http://blogsearch.google.co.th/ping/RPC2</p>
<p>http://blogsearch.google.co.uk/ping/RPC2</p>
<p>http://blogsearch.google.co.uk/pingRPC2</p>
<p>http://blogsearch.google.co.ve/ping/RPC2</p>
<p>http://blogsearch.google.co.za/ping/RPC2</p>
<p>http://blogsearch.google.com.ar/ping/RPC2</p>
<p>http://blogsearch.google.com.au/ping/RPC2</p>
<p>http://blogsearch.google.com.br/ping/RPC2</p>
<p>http://blogsearch.google.com.co/ping/RPC2</p>
<p>http://blogsearch.google.com.do/ping/RPC2</p>
<p>http://blogsearch.google.com.mx/ping/RPC2</p>
<p>http://blogsearch.google.com.my/ping/RPC2</p>
<p>http://blogsearch.google.com.pe/ping/RPC2</p>
<p>http://blogsearch.google.com.sa/ping/RPC2</p>
<p>http://blogsearch.google.com.sg/ping/RPC2</p>
<p>http://blogsearch.google.com.tr/ping/RPC2</p>
<p>http://blogsearch.google.com.tw/ping/RPC2</p>
<p>http://blogsearch.google.com.ua/ping/RPC2</p>
<p>http://blogsearch.google.com.uy/ping/RPC2</p>
<p>http://blogsearch.google.com.vn/ping/RPC2</p>
<p>http://blogsearch.google.com/ping/RPC2</p>
<p>http://blogsearch.google.de/ping/RPC2</p>
<p>http://blogsearch.google.es/ping/RPC2</p>
<p>http://blogsearch.google.fi/ping/RPC2</p>
<p>http://blogsearch.google.fr/ping/RPC2</p>
<p>http://blogsearch.google.gr/ping/RPC2</p>
<p>http://blogsearch.google.hr/ping/RPC2</p>
<p>http://blogsearch.google.ie/ping/RPC2</p>
<p>http://blogsearch.google.in/ping/RPC2</p>
<p>http://blogsearch.google.it/ping/RPC2</p>
<p>http://blogsearch.google.jp/ping/RPC2</p>
<p>http://blogsearch.google.lt/ping/RPC2</p>
<p>http://blogsearch.google.nl/ping/RPC2</p>
<p>http://blogsearch.google.pl/ping/RPC2</p>
<p>http://blogsearch.google.pt/ping/RPC2</p>
<p>http://blogsearch.google.ro/ping/RPC2</p>
<p>http://blogsearch.google.ru/ping/RPC2</p>
<p>http://blogsearch.google.se/ping/RPC2</p>
<p>http://blogsearch.google.sk/ping/RPC2</p>
<p>http://blogsearch.google.tw/ping/RPC2</p>
<p>http://blogsearch.google.us/ping/RPC2</p>
<p>http://blogshares.com/rpc.php</p>
<p>http://blogsnow.com/ping</p>
<p>http://blogstreet.com/xrbin/xmlrpc.cgi</p>
<p>http://bulkfeeds.net/rpc</p>
<p>http://catapings.com/ping.php</p>
<p>http://coreblog.org/ping/</p>
<p>http://effbot.org/rpc/ping.cgi</p>
<p>http://feedsky.com/api/RPC2</p>
<p>http://fgiasson.com/pings/ping.php</p>
<p>http://focuslook.com/ping</p>
<p>http://holycowdude.com/rpc/ping</p>
<p>http://imblogs.net/ping</p>
<p>http://j-ranking.com/ping.cgi</p>
<p>http://lasermemory.com/lsrpc</p>
<p>http://mod-pubsub.org/ping.php</p>
<p>http://newsisfree.com/RPCCloud</p>
<p>http://newsisfree.com/xmlrpctest.php</p>
<p>http://ping.amagle.com</p>
<p>http://ping.bitacoras.com</p>
<p>http://ping.blo.gs/</p>
<p>http://ping.blogg.de</p>
<p>http://ping.blogmura.jp/rpc/</p>
<p>http://ping.blogoon.net/</p>
<p>http://ping.blogs.yandex.ru/RPC2</p>
<p>http://ping.cocolog-nifty.com/xmlrpc</p>
<p>http://ping.exblog.jp/xmlrpc</p>
<p>http://ping.fakapster.com/rpc</p>
<p>http://ping.fc2.com/</p>
<p>http://ping.feedburner.com</p>
<p>http://ping.gpost.info/xmlrpc</p>
<p>http://ping.kutsulog.net/</p>
<p>http://ping.myblog.jp</p>
<p>http://ping.namaan.net/rpc</p>
<p>http://ping.rootblog.com/rpc.php</p>
<p>http://ping.speenee.com/xmlrpc</p>
<p>http://ping.syndic8.com/xmlrpc.php</p>
<p>http://ping.weblogalot.com/rpc.php</p>
<p>http://ping.weblogs.se</p>
<p>http://ping.wordblog.de</p>
<p>http://pinger.blogflux.com/rpc</p>
<p>http://pinger.onejavastreet.com</p>
<p>http://pingoat.com/goat/RPC2</p>
<p>http://pingqueue.com/rpc</p>
<p>http://queerfilter.com/ping</p>
<p>http://r.hatena.ne.jp/rpc</p>
<p>http://rcs.datashed.net/RPC2</p>
<p>http://rpc.blogbuzzmachine.com/RPC2</p>
<p>http://rpc.blogrolling.com/pinger/</p>
<p>http://rpc.britblog.com</p>
<p>http://rpc.icerocket.com:10080</p>
<p>http://rpc.newsgator.com</p>
<p>http://rpc.pingomatic.com/</p>
<p>http://rpc.reader.livedoor.com/ping</p>
<p>http://rpc.tailrank.com/feedburner/RPC2</p>
<p>http://rpc.technorati.com/rpc/ping</p>
<p>http://rpc.weblogs.com/RPC2</p>
<p>http://rpc.wpkeys.com</p>
<p>http://rssfeeds.com/suggest_wizzard.php</p>
<p>http://rssfwd.com/xmlrpc/api</p>
<p>http://serenebach.net/rep.cgi</p>
<p>http://services.newsgator.com/ngws/xmlrpcping.aspx</p>
<p>http://snipsnap.org/RPC2</p>
<p>http://thingamablog.sourceforge.net/ping.php</p>
<p>http://topicexchange.com/RPC2</p>
<p>http://trackback.bakeinu.jp/bakeping.php</p>
<p>http://wasalive.com/ping</p>
<p>http://weblogalot.com/ping</p>
<p>http://weblogues.com/RPC</p>
<p>http://xianguo.com/xmlrpc/ping.php</p>
<p>http://xmlrpc.blogg.de</p>
<p>http://xping.pubsub.com/ping/</p>
<p>http://zhuaxia.com/rpc/server.php</p>
<p>http://blogupdate.org/sverige/ping/</p>
<p>http://blo.gs/ping.php</p>
<p>http://blogping.unidatum.com/RPC2/</p>
<p>http://mod-pubsub.org/kn_apps/blogchatt</p>
<p>http://www.lasermemory.com/lsrpc/</p>
<p>http://ping.amagle.com/</p>
<p>http://ping.blogg.de/</p>
<p>http://ping.bloggers.jp/rpc/</p>
<p>http://ping.feeds.yahoo.com/RPC2/</p>
<p>http://pingoat.com/</p>
<p>http://pingqueue.com/rpc/</p>
<p>http://ping.weblogs.se/</p>
<p>http://rpc.britblog.com/</p>
<p>http://rcs.datashed.net/RPC2/</p>
<p>http://rpc.icerocket.com:10080/</p>
<p>http://rpc.newsgator.com/</p>
<p>http://rpc.pingomatic.com</p>
<p>http://rpc.wpkeys.com/</p>
<p>http://zing.zingfast.com</code></p>
<p>Daaaan.. selamat datang cahaya! <img src='http://s.wordpress.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Post Wordpress entry with Python]]></title>
<link>http://vizible.wordpress.com/2009/01/25/post-wordpress-entry-with-python/</link>
<pubDate>Sun, 25 Jan 2009 17:29:24 +0000</pubDate>
<dc:creator>wearetherock</dc:creator>
<guid>http://vizible.wordpress.com/2009/01/25/post-wordpress-entry-with-python/</guid>
<description><![CDATA[import xmlrpclib user = 'username' passwd = 'password' server = xmlrpclib.ServerProxy('http://vizibl]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><pre><span style="color:#ff80e0;">import</span><span style="color:#141312;"> xmlrpclib</span>

<span style="color:#141312;">user = </span><span style="color:#bf0303;">'username'</span>
<span style="color:#141312;">passwd = </span><span style="color:#bf0303;">'password'</span>
<span style="color:#141312;">server = xmlrpclib.ServerProxy(</span><span style="color:#bf0303;">'http://vizible.wordpress.com/xmlrpc.php'</span><span style="color:#141312;">)</span>

<span style="color:#141312;">blog_id = </span><span style="color:#b08000;">0</span>
<span style="color:#141312;">title = </span><span style="color:#bf0303;">'test title'</span><span style="color:#141312;"> </span>
<span style="color:#141312;">content = </span><span style="color:#bf0303;">'test content, from python'</span>

<span style="color:#141312;">blog_content = { </span><span style="color:#bf0303;">'title'</span><span style="color:#141312;"> : title, </span><span style="color:#bf0303;">'description'</span><span style="color:#141312;"> : content }</span>
<span style="color:#141312;">categories = [{</span><span style="color:#bf0303;">'categoryId'</span><span style="color:#141312;"> : </span><span style="color:#bf0303;">'programming'</span><span style="color:#141312;">, </span><span style="color:#bf0303;">'isPrimary'</span><span style="color:#141312;"> : </span><span style="color:#b08000;">1</span><span style="color:#141312;">}] </span>

<span style="color:#141312;">post_id = </span><span style="color:#0057ae;">int</span><span style="color:#141312;">(server.metaWeblog.newPost(blog_id, user, passwd, blog_content,</span><span style="color:#b08000;">0</span><span style="color:#141312;">))</span>
<span style="color:#141312;">server.mt.setPostCategories(post_id, user, passwd, categories) </span><span style="color:#888786;"><em># not work</em></span>
<span style="color:#141312;">server.mt.publishPost(post_id, user, passwd)
&#124;</span></pre>
<blockquote><p>Reference &#8212; <a href="http://www.blackbirdblog.it/programmazione/progetti/28">http://www.blackbirdblog.it/programmazione/progetti/28</a></p></blockquote>
<p>&#124;</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[MovableType Invalid login error on XML-RPC call]]></title>
<link>http://info4tech.wordpress.com/2009/01/22/movabletype-invalid-login-error-on-xml-rpc-call/</link>
<pubDate>Thu, 22 Jan 2009 11:49:09 +0000</pubDate>
<dc:creator>Imran Aziz</dc:creator>
<guid>http://info4tech.wordpress.com/2009/01/22/movabletype-invalid-login-error-on-xml-rpc-call/</guid>
<description><![CDATA[I have worked with XML-RPC calls in the past to interact with MT in the past but after release of ve]]></description>
<content:encoded><![CDATA[I have worked with XML-RPC calls in the past to interact with MT in the past but after release of ve]]></content:encoded>
</item>
<item>
<title><![CDATA[Terminal Pulsa H2H JPTelecom]]></title>
<link>http://lingga.wordpress.com/2009/01/20/terminal-pulsa-h2h/</link>
<pubDate>Tue, 20 Jan 2009 06:00:29 +0000</pubDate>
<dc:creator>Setia Gunawan</dc:creator>
<guid>http://lingga.wordpress.com/2009/01/20/terminal-pulsa-h2h/</guid>
<description><![CDATA[Terminal Pulsa adalah anak perusahaan Jawa Pos yaitu JP Telecom yang bergerak dibidang distibusi pul]]></description>
<content:encoded><![CDATA[Terminal Pulsa adalah anak perusahaan Jawa Pos yaitu JP Telecom yang bergerak dibidang distibusi pul]]></content:encoded>
</item>
<item>
<title><![CDATA[SOAP or REST Web Services]]></title>
<link>http://rollingwithrails.wordpress.com/2009/01/13/soap-or-rest-web-services/</link>
<pubDate>Tue, 13 Jan 2009 20:36:38 +0000</pubDate>
<dc:creator>rollingwithrails</dc:creator>
<guid>http://rollingwithrails.wordpress.com/2009/01/13/soap-or-rest-web-services/</guid>
<description><![CDATA[Now days most web services are implemented with the REST style architecture rather than a SOAP one. ]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p style="text-align:center;">
<p>Now days most web services are implemented with the REST style architecture rather than a SOAP one. Lets step explain what REST is.<br />
What is a REST Web Service</p>
<p>The acronym REST stands for Representational State Transfer,<br />
this basically means that each unique URL is a representation of some<br />
object. You can get the contents of that object using an HTTP GET, to<br />
delete it, you then might use a POST, PUT, or DELETE to modify the<br />
object (in practice most of the services use a POST for this).<br />
Who&#8217;s using REST?</p>
<p>All of Yahoo&#8217;s web services use REST, including Flickr, del.icio.us<br />
API uses it, pubsub, bloglines, technorati, and both eBay, and Amazon<br />
have web services for both REST and SOAP.<br />
Who&#8217;s using SOAP?<br />
Google seams to be consistent in implementing their web services to<br />
use SOAP, with the exception of Blogger, which uses XML-RPC. You will<br />
find SOAP web services in lots of enterprise software as well.<br />
REST vs SOAP</p>
<p>As you may have noticed the companies I mentioned that are using<br />
REST api&#8217;s haven&#8217;t been around for very long, and their apis came out<br />
this year mostly. So REST is definitely the trendy way to create a web<br />
service.<br />
The main advantages of REST web services are:</p>
<p>	 Lightweight &#8211; not a lot of extra xml markup<br />
	Human Readable Results<br />
	Easy to build &#8211; no toolkits required</p>
<p>SOAP also has some advantages:</p>
<p>	 Easy to consume &#8211; sometimes<br />
	Rigid &#8211; type checking,<br />
	Adheres to a contract<br />
	Development tools</p>
<p>For consuming web services, its sometimes a toss up between which is<br />
easier. For instance Google&#8217;s AdWords web service is really hard to<br />
consume, it uses SOAP headers, and a number of other<br />
things that make it kind of difficult. On the converse, Amazon&#8217;s REST<br />
web service can sometimes be tricky to parse because it can be highly<br />
nested, and the result schema can vary quite a bit based on what you<br />
search for.</p>
</div>]]></content:encoded>
</item>
<item>
<title><![CDATA[Xml-Rpc]]></title>
<link>http://xajax.wordpress.com/2009/01/13/xml-rpc/</link>
<pubDate>Tue, 13 Jan 2009 20:13:28 +0000</pubDate>
<dc:creator>xajax</dc:creator>
<guid>http://xajax.wordpress.com/2009/01/13/xml-rpc/</guid>
<description><![CDATA[XmlRpcRequest [-Url] &lt;[String]&gt; [-MethodName] &lt;[String]&gt; [-Params] &lt;[Object]&gt; Retu]]></description>
<content:encoded><![CDATA[<div class='snap_preview'><p>XmlRpcRequest [-Url] &#60;[String]&#62; [-MethodName] &#60;[String]&#62; [-Params] &#60;[Object]&#62;<br />
Return <a title="Xml-Rpc response" href="http://www.xmlrpc.com/spec">Xml-Rpc methodResponse</a></p>
<p>XmlRpcMethodCall [-Name] &#60;[String]&#62; [-Params] &#60;[Object]&#62;<br />
Return <a title="Xml-Rpc method call" href="http://www.xmlrpc.com/spec">Xml-Rpc methodCall</a></p>
<p>XmlRpcType [-Value] &#60;[Object]&#62;<br />
Return <a title="Xml-Rpc types" href="http://www.xmlrpc.com/spec">Xml-Rpc value</a></p>
<p>function XmlRpcType()<br />
{<br />
param( [Object]$Value )</p>
<p>if($Value -ne $NULL){ [string]$Type=$Value.GetType().Name }<br />
else{ $Type=$FALSE }</p>
<p>if((&#8216;Int32&#8242;,&#8217;Double&#8217;,'Boolean&#8217;,'String&#8217;,'Base64&#8242;,&#8217;False&#8217;) -contains $Type)<br />
{<br />
if($Type){ [string]&#8220;&#60;$($Type)&#62;&#60;value&#62;$($Value)&#60;/value&#62;&#60;/$($Type)&#62;&#8221; }<br />
else{ [string]&#8220;&#60;value&#62;&#60;/value&#62;&#8221; }<br />
}<br />
if(&#8216;DateTime&#8217; -eq $Type)<br />
{<br />
[string]&#8220;&#60;value&#62;&#60;dateTime.iso8601&#62;$($Value.ToString(&#8216;yyyyMMddTHH:mm:ss&#8217;))&#60;/dateTime.iso8601&#62;&#60;/value&#62;&#8221;<br />
}<br />
if($Value -is [Array])<br />
{<br />
[string]&#8220;&#60;value&#62;&#60;array&#62;&#60;data&#62;$(&#38;{ $Value &#124; %{ &#8220;$(&#38;{ XmlRpcType $_ })&#8221;}})&#60;/data&#62;&#60;/array&#62;&#60;/value&#62;&#8221;<br />
}<br />
if(&#8216;Hashtable&#8217; -eq $Type)<br />
{<br />
[string]&#8220;&#60;value&#62;&#60;struct&#62;$(&#38;{ $Value.Keys &#124; %{ &#8220;&#60;member&#62;&#60;name&#62;$($_)&#60;/name&#62;$(&#38;{ XmlRpcType $Value[$_] })&#60;/member&#62;&#8221; } })&#60;/struct&#62;&#60;/value&#62;&#8221;<br />
}<br />
}</p>
<p>function XmlRpcMethodCall()<br />
{<br />
param<br />
(<br />
[String]$Name=$(throw &#8220;Method name is requried parameter!&#8221;),<br />
[Object]$Params<br />
)</p>
<p>[String]((&#38;{<br />
&#8220;&#60;?xml version=&#8217;1.0&#8242;?&#62;&#60;methodCall&#62;&#60;methodName&#62;$($Name)&#60;/methodName&#62;&#60;params&#62;&#8221;<br />
if($Params){$Params &#124; %{ &#8220;&#60;param&#62;$(&#38;{XmlRpcType $_})&#60;/param&#62;&#8221; } }<br />
else{&#8220;&#60;param&#62;$(&#38;{XmlRpcType $NULL})&#60;/param&#62;&#8221;}<br />
&#8220;&#60;/params&#62;&#60;/methodCall&#62;&#8221;<br />
}) -join(&#8221;))</p>
<p>}</p>
<p>function XmlRpcRequest()<br />
{<br />
param(<br />
[String]$Url,<br />
[String]$MethodName,<br />
[Object]$Params<br />
)</p>
<p>if($Url -and $MethodName){<br />
try{<br />
($doc=New-Object Xml.XmlDocument).LoadXml(<br />
(New-Object Net.WebClient).UploadString(<br />
$Url,<br />
(XmlRpcMethodCall $MethodName $Params)<br />
)<br />
)<br />
[Xml.XmlDocument]$doc<br />
}<br />
catch [System.Net.WebException],[System.IO.IOException] {&#8216;WebClient Error&#8217;}<br />
catch {&#8216;Unhandle Error&#8217;}<br />
finally {}<br />
}<br />
}</p>
</div>]]></content:encoded>
</item>

</channel>
</rss>
