Aug 20, 2007
上一篇日志中有点小错误,以为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服务端:
- // 创建一个xml-rpc服务
- // del.icio.us发送链接时会调用metaWeblog.newPost方法
- // 而我们的程序收到消息后,又将调用我们定义的newPost方法
- // 所以我们可以在newPost方法中做自己想做的事情
- $s = new xmlrpc_server(array(
- 'metaWeblog.newPost' => array(
- 'function' => 'newPost'
- // 这里还可以定义其它参数,参数类型,方法描述等
- // 不要使用参数类型,del.icio.us发送的数据和MetaWeblog API中不一致
- // 规范中第一个参数是string类型,而del.icio.us发送的是int类型 ?
- )
- ));
- // 参数$m是xml-rpc for php中的xmlrpcmsg类型
- function newPost($m) {
- global $xmlrpcerruser;
- $n = php_xmlrpc_decode($m);
- $blogid = $n[0];
- $username = $n[1]; // 用户名
- $password = $n[2]; // 密码
- $struct = $n[3]; // 数组类型
- $publish = $n[4];
- $title = $struct['title']; // 标题
- $content = $struct['description']; // 内容
- // 有了上述值后,就随你操作了
- // 验证用户是否合法
- // 插入数据
- if ($failure) {
- // 失败返回这个
- return new xmlrpcresp(0, $xmlrpcerruser, "failure");
- } else {
- // 成功返回这个,$uuid是生成的日志id
- return new xmlrpcresp(new xmlrpcval("$uuid", "string"));
- }
- }
然后进入del.icio.us -> settings -> daily blog posting -> add a new thingy 中设置xml-rpc服务端地址、用户名、密码等。
上述代码就可以完成接收del.icio.us最新收藏的功能。应该再过几十分钟del.icio.us就会发送一篇收藏到这个日志中来。
如果没有,就是我人品有问题了。



本文相关评论|Comments