since.2006  

上一篇日志中有点小错误,以为del.icio.us是通过BloggerAPI来发送最新的网页收藏,经过测试其实是用MetaWeblog API来实现的。

现在很多本地博客客户端程序远程提交日志一般都是用BloggerAPI, MetaWeblog API来实现的,只不过他们实现了整个相关接口。我们来实现一个最简单的接收功能。:)

相关资源
XML-RPC for PHP: http://phpxmlrpc.sourceforge.net
MetaWeblog API: http://www.xmlrpc.com/metaWeblogApi
RSS2.0: http://blogs.law.harvard.edu/tech/rss

先用xml-rpc for php实现一个xml-rpc服务端:

  1. // 创建一个xml-rpc服务   
  2. // del.icio.us发送链接时会调用metaWeblog.newPost方法   
  3. // 而我们的程序收到消息后,又将调用我们定义的newPost方法   
  4. // 所以我们可以在newPost方法中做自己想做的事情   
  5. $s = new xmlrpc_server(array(   
  6.                 'metaWeblog.newPost' => array(   
  7.                 'function' => 'newPost'  
  8.                 // 这里还可以定义其它参数,参数类型,方法描述等   
  9.                 // 不要使用参数类型,del.icio.us发送的数据和MetaWeblog API中不一致   
  10.                 // 规范中第一个参数是string类型,而del.icio.us发送的是int类型 ?   
  11.                 )   
  12.             ));   
  13.   
  14. // 参数$m是xml-rpc for php中的xmlrpcmsg类型   
  15. function newPost($m) {   
  16.     global $xmlrpcerruser;   
  17.        
  18.     $n = php_xmlrpc_decode($m);   
  19.        
  20.     $blogid = $n[0];       
  21.     $username = $n[1];  // 用户名   
  22.     $password = $n[2];  // 密码   
  23.     $struct = $n[3];    // 数组类型   
  24.     $publish = $n[4];      
  25.   
  26.     $title = $struct['title'];  // 标题   
  27.     $content = $struct['description'];  // 内容   
  28.   
  29.     // 有了上述值后,就随你操作了   
  30.     // 验证用户是否合法   
  31.     // 插入数据   
  32.   
  33.     if ($failure) {   
  34.         // 失败返回这个   
  35.         return new xmlrpcresp(0, $xmlrpcerruser"failure");   
  36.     } else {   
  37.         // 成功返回这个,$uuid是生成的日志id   
  38.         return new xmlrpcresp(new xmlrpcval("$uuid""string"));   
  39.     }   
  40. }  

然后进入del.icio.us -> settings -> daily blog posting -> add a new thingy 中设置xml-rpc服务端地址、用户名、密码等。

上述代码就可以完成接收del.icio.us最新收藏的功能。应该再过几十分钟del.icio.us就会发送一篇收藏到这个日志中来。
如果没有,就是我人品有问题了。

 


Posted by hee at 16:08 PM | Permalink | 评论(0) | PHP

请输入名称
请输入邮件地址

 

    请输入邮件地址