XML-RPC 简单理解与博客园的MetaWeblog协议
参考资料:
https://zh.wikipedia.org/wiki/XML-RPC
http://www.cnblogs.com/services/metablogapi.aspx
主要程序接口(来自博客园):
blogger.deletePost —— 删除文章
blogger.getUsersBlogs —— 获取用户博客信息
metaWeblog.editPost —— 编辑文章
metaWeblog.getCategories —— 获取用户博客分类
metaWeblog.getPost —— 获取文章
metaWeblog.getRecentPosts —— 获取最近的文章
metaWeblog.newMediaObject —— 添加媒体对象(图片等)
metaWeblog.newPost —— 添加文章
wp.newCategory —— 添加目录
接口说明
blogger.deletePost
请求
<?xml version="1.0"?>
<methodCall>
<methodName>blogger.deletePost</methodName>
<params>
<param>
<value><string>appkey</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>
返回
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<boolean>1</boolean>
</value>
</param>
</params>
</methodResponse>
blogger.getUsersBlogs
请求
<?xml version="1.0"?>
<methodCall>
<methodName>blogger.getUsersBlogs</methodName>
<params>
<param>
<value><string>appkey</string></value>
</param>
<param>
<value><string>username</string></value>
</param>
<param>
<value><string>password</string></value>
</param>
</params>
</methodCall>
返回
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>blogid</name>
<value>
<string>dsafds</string>
</value>
</member>
<member>
<name>url</name>
<value>
<string>http://www.cnblogs.com/caipeiyu/</string>
</value>
</member>
<member>
<name>blogName</name>
<value>
<string>蛀牙</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
metaWeblog.editPost
请求
返回
metaWeblog.getCategories
请求
返回
metaWeblog.getPost
请求
<?xml version="1.0"?>
<methodCall>
<methodName>blogger.getUsersBlogs</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"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>dateCreated</name>
<value>
<dateTime.iso8601>时间</dateTime.iso8601>
</value>
</member>
<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>
<member>
<name>enclosure</name>
<value>
<struct>
<member>
<name>length</name>
<value>
<i4>0</i4>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>link</name>
<value>
<string>http://.html</string>
</value>
</member>
<member>
<name>permalink</name>
<value>
<string>http://.html</string>
</value>
</member>
<member>
<name>postid</name>
<value>
<i4>00000</i4>
</value>
</member>
<member>
<name>source</name>
<value>
<struct />
</value>
</member>
<member>
<name>mt_keywords</name>
<value>
<string />
</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>
metaWeblog.getRecentPosts
请求
<?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>10</i4></value>
</param>
</params>
</methodCall>
返回
<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<array>
<data>
<value>
<struct>
<member>
<name>dateCreated</name>
<value>
<dateTime.iso8601>20160405T18:32:00</dateTime.iso8601>
</value>
</member>
<member>
<name>description</name>
<value>
<string>博客测试内容</string>
</value>
</member>
<member>
<name>title</name>
<value>
<string>标题测试内容</string>
</value>
</member>
<member>
<name>enclosure</name>
<value>
<struct>
<member>
<name>length</name>
<value>
<i4>0</i4>
</value>
</member>
</struct>
</value>
</member>
<member>
<name>link</name>
<value>
<string>http://www.cnblogs.com/caipeiyu/p/5356274.html</string>
</value>
</member>
<member>
<name>permalink</name>
<value>
<string>http://www.cnblogs.com/caipeiyu/p/5356274.html</string>
</value>
</member>
<member>
<name>postid</name>
<value>
<string>5356274</string>
</value>
</member>
<member>
<name>source</name>
<value>
<struct />
</value>
</member>
<member>
<name>userid</name>
<value>
<string>-2</string>
</value>
</member>
</struct>
</value>
</data>
</array>
</value>
</param>
</params>
</methodResponse>
metaWeblog.newMediaObject
请求
返回
metaWeblog.newPost
请求
这个请求内容标题和内容是必须的,其他可以选填
<?xml version="1.0"?>
<methodCall>
<methodName>metaWeblog.newPost</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>博客测试内容</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"?>
<methodResponse>
<params>
<param>
<value>
<string>000000</string>
</value>
</param>
</params>
</methodResponse>
wp.newCategory
请求
返回