手机浏览 RSS 2.0 订阅 膘叔的简单人生 , 腾讯云RDS购买 | 超便宜的Vultr , 免费部署 N8N 的 Zeabur 注册 | 登陆
浏览模式: 标准 | 列表全部文章

小朋友逛南京路

纯图片无内容,HOHO

图片附件(缩略图):
大小: 1.37 M
尺寸: 282 x 376
浏览: 2343 次
点击打开新窗口浏览全图

图片附件(缩略图):
大小: 1.02 M
尺寸: 282 x 376
浏览: 2287 次
点击打开新窗口浏览全图

图片附件(缩略图):
大小: 1.33 M
尺寸: 282 x 376
浏览: 2186 次
点击打开新窗口浏览全图

图片附件(缩略图):
大小: 1.45 M
尺寸: 282 x 376
浏览: 2399 次
点击打开新窗口浏览全图

图片附件(缩略图):
大小: 1.48 M
尺寸: 282 x 376
浏览: 2245 次
点击打开新窗口浏览全图

what's this?

知道的人知道这是什么,不知道的也不知道这是什么

用某人的话说,这种广告词根本让人不知所云,早点开掉算了。。。

9月1日

这一天,你懂的。

当然,不是我一个人。嗯其实从很久以前,我就不再读书了。所以这里讲的也不是我啦。
今天是小朋友第一天去学校,据说丈母娘一夜没睡好,老婆也是迷迷糊糊,但早上醒来后就打电话给丈母娘说送到学校后就扔在学校里,不要拖拖拉拉,否则反而小朋友会哭的。

中午的时候,老婆就电话我说小朋友几乎没哭,就哇哇两下就没事了。然后还贴了一个小五角星。
说是学校的小朋友们有几个哭的非常厉害。
晚上到家的时候问他怎么样,他说,不错;还说不要外婆带他回家了,要陆老师带他回家。暈倒。
还说,有个小朋友在哭,我们问他你怎么不叫他别哭啊。他说我在玩玩具呀,没空。然后又说,我也哭了。问怎么回事,他说,我想你们了呀。。。

总之一天就这样愉快的过去了,对学校也没有害怕。真是一件令人快乐的事情。希望他能够在学校里过的快乐吧(毕竟第一天就遇到了有人抢他玩具还掰他手指抢玩具,真TMD纠结)

三步,临时解决新浪微博接口ID超长的BUG

其实,不久前就知道新浪微博的ID的长度发生了变化,所以,原来的无符号长整形的长度是肯定不够了,超出后就变成了科学计数法。这样的URL可是没有办法在浏览器中打开的。
但服务器上一直没有这个问题,运行了uname -a后发现是64位系统,但测试机是32位的,怎么解决这个问题呢?
检查了一下oauth的代码,发现问题出在了json_decode函数上,因为取回来的数据都是字符串,只是在经过json_decode后,数字才超出长度了。知道这个问题后就好办了。
搜索json_decode,在这上面加上一行:
$response = preg_replace('@"id":(\d+)@','"id":"\\1"',$response);
为ID强制加上引号,变成字符串,而不是int型,所以在经过json_decode后,就仍然是字符串了。NND,新浪真偷懒,全部搞成字符串不就结了?到现在还在那里折腾整形不整形的。。

所幸,问题解决了。

转:用XML-RPC协议读写WordPress上的文章

 这是一篇很小的例子,事实上网上这些例子是超多的,不过由于我是要模拟metaweblog或者是wordpress的一些操作,那我就必须要先了解很多相关的背景。
不过这里只是模拟一些发布和读取的接口,稍作了解即可。
原文来自:用XML-RPC协议读写WordPress上的文章我这里只简要的摘取一部分。

WordPress提供了XML-RPC接口使得第三方的博客写作软件(如windows live writer等)可以与之通信来发布和修改博客。我们也可以在网站上使用这个接口做一些工作,例如:在网站首页显示最新的博客、在博客之外的页面上发表博 客文章、把博客与其他内容管理系统结合,等等。

一、开启XML-RPC支持

XML-RPC协议默认是未开启的,需要到WordPress管理后台的“设置–>撰写”里的“远程发布”给XML-RPC打上勾。其说明文 字为:启用 WordPress,Movable Type,MetaWeblog和Blogger 的 XML-RPC发布协议。

二、获取接口的信息

我们查看博客首页的源代码,在head中可以发现类似这样的link项

XML/HTML代码
  1. <link title="RSD" rel="EditURI" type="application/rsd+xml" href="http://blog.bluesky.cn/xmlrpc.php?rsd" />  

其中的"RSD"是“Really Simple Discovery”的意思,也就是说这是一个“简单的发现博客编辑接口”的地址。我们用浏览器直接访问这个地址就可以在其返回XML中获知博客的 ID(blogID,一般这个的值是“1”)以及它所支持的接口类型和接口地址。

三、API接口选择

WordPress提供了对Blogger APImetaWeblog APIMovable Type API以及其自身的WordPress API的支持。其中WordPress API最为丰富,提供了包括操作评论文章在内的各种各样的支持。Blogger API功能较少,基本上淘汰不用了;而metaWeblog API提供了常用的接口且参数比较简洁,用得较多一些。

四、例子代码

以下是使用Incutio的XML-RPC库和Blogger API发布文章的例子,其中IXR库也是Wordpress自身所用的库,可以在“wp-includes/class-IXR.php”找到。

PHP代码
  1. <?php  
  2. $xmlrpcurl='http://blog.bluesky.cn/xmlrpc.php';  
  3. $blogid='1';  
  4. $username='admin';  
  5. $password='pass';  
  6. $postTitle='标题';  
  7. $postContent='正文内容';  
  8.    
  9. require('class-IXR.php');  // /wordpress/wp-includes/class-IXR.php  
  10. $client = new IXR_Client($xmlrpcurl);  
  11.    
  12. $params=array(  
  13.    '',  
  14.    'blog_ID'=>$blogid,  
  15.    'user_login'=>$username,  
  16.    'user_pass'=>$password,  
  17.    'post_content'=>'' . $postContent,  
  18.    'publish'=>true  
  19. );  
  20. $params=array_values($params);  
  21.    
  22. $client->query("blogger.newPost",$params);  
  23. $response=$client->getResponse();  
  24.    
  25. if ($response['faultCode']==0){  
  26.    print 'Success';  
  27. else {  
  28.    print 'Fail:' . $response['faultString'];  
  29. }  
  30. ?>  
以下是用XML-RPC for PHP库和metaWeblog接口发布文章的例子。要先下载phpxmlrpc库取出其中的xmlrpc.inc来用。
PHP代码
  1. <?php  
  2. include("xmlrpc.inc"); // 这里要改成xmlrpc.inc所在的路径  
  3. $GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';  
  4.    
  5. define ('DOMAIN''blog.bluesky.cn'); // 博客的域名  
  6. define ('BLOGID', 1); // 博客ID,一般为1  
  7. define ('USER''admin'); // 博客登录的用户名  
  8. define ('PASSWORD''pass'); // 博客登录的密码  
  9.    
  10. // 创建 xml-rpc client  
  11. $cl = new xmlrpc_client ( "/xmlrpc.php", DOMAIN, 80);  
  12.    
  13. // 准备请求  
  14. $req = new xmlrpcmsg('metaWeblog.newPost');  
  15. // 逐个列出请求的参数:  
  16. $req->addParam ( new xmlrpcval ( BLOGID, 'int')); // 博客ID  
  17. $req->addParam ( new xmlrpcval ( USER, 'string' )); // 用户名  
  18. $req->addParam ( new xmlrpcval ( PASSWORD, 'string' )); // 密码  
  19. $struct = new xmlrpcval (  
  20.     array (  
  21.         "title" => new xmlrpcval ( '标题''string' ), // 标题  
  22.         "description" => new xmlrpcval ( '正文内容''string'), // 内容  
  23.     ), "struct"  
  24. );  
  25. $req->addParam ( $struct );  
  26. $req->addParam ( new xmlrpcval (1, 'int')); // 立即发布  
  27.    
  28. // 发送请求  
  29. $ans = $cl->send($req);  
  30.    
  31. var_dump ( $ans );  
  32. ?>  
注意一定要加上:$GLOBALS['xmlrpc_internalencoding'] = ‘UTF-8′;这一句,否则不能正确处理中文。 另一段也是用phpxmlrpc库和metaWeblog接口发表文章的例子代码,该代码使用了返回类型为“phpvals”,这样可以直接用返回结果 的$r->val来获取文章ID号。
PHP代码
  1. <?php  
  2.   include("xmlrpc.inc");  
  3.   $GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';   
  4.    
  5.   $c = new xmlrpc_client("/xmlrpc.php""blog.bluesky.cn", 80);  
  6.   $content['title']="标题";  //标题  
  7.   $content['description']="正文内容"//内容  
  8.   $content['mt_keywords']="标签1,标签2";  //标签  
  9.   $content['wp_password']="";  //文章密码,输入后显示加密  
  10.   $content['categories'] = array("分类1","分类2"); //分类名  
  11.   $x = new xmlrpcmsg("metaWeblog.newPost",  
  12.                       array(php_xmlrpc_encode("1"), //BLOG ID  
  13.                       php_xmlrpc_encode("admin"),  //用户名  
  14.                       php_xmlrpc_encode("pass"),  //密码  
  15.                       php_xmlrpc_encode($content),  
  16.                       php_xmlrpc_encode("1")));    //立即发表  
  17.    
  18.   $c->return_type = 'phpvals';  
  19.   $r =$c->send($x);  
  20.   if ($r->errno=="0")  
  21.     echo "发表成功,文章序号为:".$r->val;  
  22.   else {  
  23.     echo "出错了";  
  24.     print_r($r);  
  25.   }  
  26. ?>  

以下是读取最新一篇文章的例子代码:

PHP代码
  1. <?php  
  2.   include("xmlrpc.inc");  
  3.   $GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';  
  4.   $c = new xmlrpc_client("/xmlrpc.php""blog.bluesky.cn", 80);  
  5.    
  6.   $msg = new xmlrpcmsg('metaWeblog.getRecentPosts',  
  7.                         array(php_xmlrpc_encode("1"),  
  8.                         php_xmlrpc_encode("admin"),  
  9.                         php_xmlrpc_encode("pass"),  
  10.                         php_xmlrpc_encode("1")) );  
  11.   $res = $c->send($msg);  
  12.   $val = $res->value();  
  13.    
  14.   $val->arraymem(0)->structreset();  
  15.   while (list($key$v) = $val->arraymem(0)->structeach())  
  16.   {  
  17.     echo "Element: $key; Type: ".$v->kindOf()."; Value:".$v->scalarval()."\n";  
  18.   }  
  19. ?>  
原文地址:http://blog.bluesky.cn/archives/466/using-xml-rpc-protocol-to-read-and-write-articles-on-wordpress.html

 

 

Tags: wordpress, xml-rpc, metaweblog