Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2105462
  • 博文数量: 194
  • 博客积分: 6450
  • 博客等级: 准将
  • 技术积分: 2085
  • 用 户 组: 普通用户
  • 注册时间: 2005-06-06 13:39
文章分类

全部博文(194)

文章存档

2013年(38)

2012年(11)

2011年(1)

2010年(1)

2009年(4)

2008年(13)

2007年(18)

2006年(63)

2005年(45)

我的朋友

分类: 系统运维

2012-11-05 16:40:09

今天就分享一个wordpress远程自动发布文章的源码。

首先你的博客程序必须有xmlrpc接口,一般wordpress是肯定有的。如果不确定,你打开你博客首页,看源码,header区有类似.com/xmlrpc" />,一般都是支持的。

wordpress默认是这样的:

其中: 就是api接口地址了。


源码如下,请自行进行相应更改:
$xmlrpcurl='.com/xmlrpc.php';
$blogid='1';
$username='admin';
$password='pass';
$postTitle='标题';
$postContent='正文内容';
require('class-IXR.php');  // /wordpress/wp-includes/class-IXR.php
$client = new IXR_Client($xmlrpcurl);
$params=array(
'',
'blog_ID'=>$blogid,
'user_login'=>$username,
'user_pass'=>$password,
'post_content'=>'' . $postContent,
'publish'=>true
);
$params=array_values($params);
$client->query("blogger.newPost",$params);
$response=$client->getResponse();
if ($response['faultCode']==0){
print 'Success';
} else {
print 'Fail:' . $response['faultString'];
}
?>
//以下是用XML-RPC for PHP库和metaWeblog接口发布文章的例子。要先下载phpxmlrpc库取出其中的xmlrpc.inc来用。
include("xmlrpc.inc"); // 这里要改成xmlrpc.inc所在的路径
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
define ('DOMAIN', 'blog.bluesky.cn'); // 博客的域名
define ('BLOGID', 1); // 博客ID,一般为1
define ('USER', 'admin'); // 博客登录的用户名
define ('PASSWORD', 'pass'); // 博客登录的密码
// 创建 xml-rpc client
$cl = new xmlrpc_client ( "/xmlrpc.php", DOMAIN, 80);
// 准备请求
$req = new xmlrpcmsg('metaWeblog.newPost');
// 逐个列出请求的参数:
$req->addParam ( new xmlrpcval ( BLOGID, 'int')); // 博客ID
$req->addParam ( new xmlrpcval ( USER, 'string' )); // 用户名
$req->addParam ( new xmlrpcval ( PASSWORD, 'string' )); // 密码
$struct = new xmlrpcval (
array (
"title" => new xmlrpcval ( '标题', 'string' ), // 标题
"description" => new xmlrpcval ( '正文内容', 'string'), // 内容
), "struct"
);
$req->addParam ( $struct );
$req->addParam ( new xmlrpcval (1, 'int')); // 立即发布
// 发送请求
$ans = $cl->send($req);
var_dump ( $ans );
?>
//注意一定要加上:$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';这一句,否则不能正确处理中文。
//另一段也是用phpxmlrpc库和metaWeblog接口发表文章的例子代码,该代码使用了返回类型为“phpvals”,这样可以直接用返回结果的$r->val来获取文章ID号。
include("xmlrpc.inc");
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
$c = new xmlrpc_client("/xmlrpc.php", "", 80);
$content['title']="标题";  //标题
$content['description']="正文内容"; //内容
$content['mt_keywords']="标签1,标签2";  //标签
$content['wp_password']="";  //文章密码,输入后显示加密
$content['categories'] = array("分类1","分类2"); //分类名
$x = new xmlrpcmsg("metaWeblog.newPost",
array(php_xmlrpc_encode("1"), //BLOG ID
php_xmlrpc_encode("admin"), //用户名
php_xmlrpc_encode("pass"), //密码
php_xmlrpc_encode($content),
php_xmlrpc_encode("1")));    //立即发表
$c->return_type = 'phpvals';
$r =$c->send($x);
if ($r->errno=="0")
echo "发表成功,文章序号为:".$r->val;
else {
echo "出错了";
print_r($r);
}
?>
//以下是读取最新一篇文章的例子代码:
include("xmlrpc.inc");
$GLOBALS['xmlrpc_internalencoding'] = 'UTF-8';
$c = new xmlrpc_client("/xmlrpc.php", "blog.bluesky.cn", 80);
$msg = new xmlrpcmsg('metaWeblog.getRecentPosts',
array(php_xmlrpc_encode("1"),
php_xmlrpc_encode("admin"),
php_xmlrpc_encode("pass"),
php_xmlrpc_encode("1")) );
$res = $c->send($msg);
$val = $res->value();
$val->arraymem(0)->structreset();
while (list($key, $v) = $val->arraymem(0)->structeach())
{
echo "Element: $key; Type: ".$v->kindOf()."; Value:".$v->scalarval()."\n";
}
?>
阅读(3331) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~