修改Z-Blog的RPC接口,兼容MWeb发布服务
事出有因
今天下载新版MWeb,准备研究下发布服务,发现zblog竟然不能很好支持,每次提交是成功的,但是无法修改,只能修改ID为1的文章,很是蛋疼。通过抓包发现,其原因是没有返回文章ID,而是返回了一个boolean值:
<methodResponse><params><param><value><boolean>1</boolean></value></param></params></methodResponse>

解决思路是修改返回值,增加文章ID。
增加NewArticleID参数
检查代码发现 PostArticle() 仅返回一个布尔值,为了尽量少的修改代码,我在$_POST加入了一个变量进行处理。
修改/zb_system/function/c_system_event.php
function PostArticle()
{
...
// modify by piaoyun
// 2018-08-09
// 增加一个参数供rpc调用
$_POST['NewArticleID'] = $article->ID;
return true;
}
修改xmlrpc返回值
修改/zb_system/xml-rpc/index.php
function xmlrpc_editPost($id, $xmlstring, $publish)
{
...
//$strXML = '<methodResponse><params><param><value><boolean>$%#1#%$</boolean></value></param></params></methodResponse>';
// modify by piaoyun
// 2018-08-09
// 修改value类型
$strXML = '<methodResponse><params><param><value><string>$%#1#%$</string></value></param></params></methodResponse>';
if (PostArticle() == true) {
//$strXML = str_replace("$%#1#%$", 1, $strXML);
// modify by piaoyun
// 2018-08-09
// 调用NewArticleID返回给客户端
$strXML = str_replace("$%#1#%$", $_POST['NewArticleID'], $strXML);
echo $strXML;
} else {
xmlrpc_ShowError(0, __FILE__, __LINE__);
}
}
}
再次测试,顺利提交,本文就是用MWeb提交的。_^
已有3位网友发表了看法:
RSS挂了,飘总修一下。
发表评论