想实现自己的文章一处编写,多处发布到各大平台(比如博客园,CSDN)等要怎么实现呢。需要由这些组成:
一般来说,写文章的软件很容易获得,如果目标平台再有开放接口,我们可以将文章通过接口进行发布。
博客园支持 metaWebBlog 接口,使得可以接收来自 接口 的文章
MetaWeblog API(MWA)是一个Blog程序接口标准。通过MetaWeblog API,博客平台可以对外公布blog提供的服务,从而允许外面的程序新建,编辑,删除,发布bolg。
MetaWeblog 使用 xml-RPC 作为通讯协议。
XML-RPC是一个远程过程调用(远端程序呼叫)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为传送机制。一个XML-RPC消息就是一个请求体为xml的http-post请求,被调用的方法在服务器端执行并将执行结果以xml格式编码后返回。
简单理解就是:在 HTTP请求 中,发送 xml 格式描述的“调用指令”,如果调用成功,会收到 xml格式描述的“执行结果”。
还有一些关于 文章分类 的接口,可以在其接口文档中找到。
在 博客园 设置页面的地步可以找到 API接口的说明,类似这样:
https://rpc.cnblogs.com/metaweblog/{userName}
上面的 {userName} 替换成实际的用户名。
下文仅说明“请求的接口和参数”,响应内容在发送成功后一看便知。
示例:
<?xml version="1.0"?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string>{userName}</string></value>
</param>
<param>
<value><string>{password}</string></value>
</param>
</params>
</methodCall>
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.getRecentPosts</methodName>
<params>
<param>
<value><string>000000</string></value>
</param>
<param>
<value><string>{userName}</string></value>
</param>
<param>
<value><string>{password}</string></value>
</param>
<param>
<value><i4>1</i4></value>
</param>
</params>
</methodCall>
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.getPost</methodName>
<params>
<param>
<value><string>{postid}</string></value>
</param>
<param>
<value><string>{userName}</string></value>
</param>
<param>
<value><string>{password}</string></value>
</param>
</params>
</methodCall>
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.newPost</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string>{userName}</string></value>
</param>
<param>
<value><string>{password}</string></value>
</param>
<param>
<value>
<struct>
<member>
<name>description</name>
<value>
<string>博客测试内容</string>
</value>
</member>
<member>
<name>title</name>
<value>
<string>标题测试内容</string>
</value>
</member>
<member>
<name>categories</name>
<value>
<array>
<data>
<value>
<string>[Markdown]</string>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
<param>
<value><boolean>0</boolean></value>
</param>
</params>
</methodCall>
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.editPost</methodName>
<params>
<param>
<value><string>{postid}</string></value>
</param>
<param>
<value><string>{userName}</string></value>
</param>
<param>
<value><string>{password}</string></value>
</param>
<param>
<value>
<struct>
<member>
<name>description</name>
<value>
<string>博客测试内容222</string>
</value>
</member>
<member>
<name>title</name>
<value>
<string>标题测试内容222</string>
</value>
</member>
<member>
<name>categories</name>
<value>
<array>
<data>
<value>
<string>[Markdown]</string>
</value>
</data>
</array>
</value>
</member>
</struct>
</value>
</param>
<param>
<value><boolean>0</boolean></value>
</param>
</params>
</methodCall>
<?xml version="1.0"?>
<methodCall>
<methodName>blogger.deletePost</methodName>
<params>
<param>
<value><string></string></value>
</param>
<param>
<value><string>{postid}</string></value>
</param>
<param>
<value><string>{userName}</string></value>
</param>
<param>
<value><string>{password}</string></value>
</param>
<param>
<value><boolean>0</boolean></value>
</param>
</params>
</methodCall>
这篇文章很详细的介绍了接口: https://www.cnblogs.com/caipeiyu/p/5354341.html
https://zh.wikipedia.org/wiki/XML-RPC http://www.cnblogs.com/services/metablogapi.aspx
END