欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MetaWebLog API

程序员文章站 2022-04-14 16:10:18
介绍 XML-RPC是一个远程过程调用(远程过程调用)(remote procedure call,RPC)的分布式计算协议,通过XML将调用函数封装,并使用HTTP协议作为发送机制。 XML-RPC发表于1998年,由UserLand Software(UserLand Software)的Dav... ......

介绍

xml-rpc是一个远程过程调用(远程过程调用)(remote procedure callrpc)的分布式计算协议,通过xml将调用函数封装,并使用http协议作为发送机制。

xml-rpc发表于1998年,由userland softwareuserland software)的dave winermicrosoft共同发表。后来在新的功能不断被引入下,这个标准慢慢演变成为今日的soap协议。

可见这个协议发布的非常早,它的官网停留在了2004年。关于这方面的资料非常少,只有在msdn和博客园很早的文章中才能寻得一点蛛丝马迹。

可我们讲的是metaweblog,为什么还要介绍xmlprc

metaweblog apimwa)是一个编程接口,允许外部程序获取和设置weblog帖子的文本和属性。它建立在流行的xml-rpc通信协议之上,在许多流行的编程环境中都可以使用实现。

2003年之际,很多的博客平台开始支持metaweblog api,允许第三方编辑器和内容管理器对博客进行编辑管理。

在现在,比如mweb,windows live writer的文章发布都是以这个api为基础的!

而这个api,就是9102年博客同步的关键所在!

接口介绍

折腾了两天,被博客园的一篇有小错误的文章搞得心态全崩,后来查了msdn才可以成功请求。

以博客园为例,有这些接口

blogger.deletepost —— 删除文章
blogger.getusersblogs ——
获取用户博客信息
metaweblog.editpost ——
编辑文章
metaweblog.getcategories ——
获取用户博客分类
metaweblog.getpost ——
获取文章
metaweblog.getrecentposts ——
获取最近的文章
metaweblog.newmediaobject ——
添加媒体对象(图片等)
metaweblog.newpost ——
添加文章
wp.newcategory ——
添加目录

我们主要用到的接口是getusersblogseditpostgetrecentpostsnewpost.

通过newpost循环多平台发布文章,editpostgetrecentposts作为后续管理和编辑的方法。

getusersblogs可用可不用,在一些平台上要通过此方法获取blogid才可以实现下面方法,但是博客园只要账号密码就可以实现。

不过这个方法可以获取用户名,对于工具的用户体验有帮助

实现过程

调试工具:精易网页助手
api
接口地址:https://rpc.cnblogs.com/metaweblog/博客名
访问方法:
post
编码:
utf-8

1.blogger.getusersblogs

参数:
1)[string]xmlrpc_url(
即上述api接口地址)
2)[string]username(
博客园账号)
3)[string]pwd(
博客园密码)

这一步为获取博主信息,上面说到这步其实可以省略,但是为了下面的工具编写,我们依旧演示。
578-getusersblogs.png
可见我们成功获取了blogid和用户名(非博客名)

2.metaweblog.newpost

参数:
1)[string]blogid(
经过测试,此项被忽略但是不能删去对应标签)
2)[string]username
3)[string]pwd
4)[struct]post(
此项是一个结构,具体参考文末的博客园文档)
5)[bool]publish(
是否发布.1为发布,0为不发布)

这里吐槽两句,博客园的一篇文章给了这个方法的示例,但是我请求时总是显示request from client does not contain valid xml. 但是我提交的xml没有错误,直到找到了msdn上的一个示例,猛地看到encoding
没错,post提交信息必须以utf-8编码,之前一直以gb2312提交,永远提示错误。当然,如果不提交中文,编码随意~

演示:
578-newpost.png

显示的字符串说明发布成功,字符串为该文章的postid

博客页面:
578-newpost2.png

发布成功,url地址的最后就是刚刚获取到的postid,内容也是刚刚提交的内容。

最重要的一步,也是坑我最久的一步搞定~

3.metaweblog.getrecentposts

参数:
1)[string]blogid(ignored)
2)[string]username
3)[string]pwd
4)[int]numberofposts(
获取文章的数量)

这个是接下来我做工具想要的一个功能,用于查看是否同步到最新文章

演示(解析树很长,截不完整,是对的)
578-getrecentpost.png

4.metaweblog.editpost

用法同newpost只是要加一个postid的参数,这个在getrecentpost中可以获取到~

一点总结

这是一个非常有用的接口,已知国内cto,博客园,开源中国都支持此方法发布文章。那么就可以写出一个博客同步发表工具,作为独立博客流量的入口,提高了同步效率!

参考文章

这次参考的文章感觉都是2000年时代的,自己一点点查文档研究也是不容易了……

转自:

 

动手实践

本来想通过自己调用api来实现客户端发布博文的,但是后来又想想。自己写的编辑器难免会有缺陷,不如word编辑来得方便,因此直接使用office 2019 word来发布了。

具体发布过程如下:

  1. 新建博客文章模板

MetaWebLog API

  1. 编辑博文内容

MetaWebLog API

  1. 配置发布账户

打开此模板的左上角的"账户管理",账号等信息来源于博客供应商中个人配置页面。

MetaWebLog API

  1. 发布博文

点击此模板左上角的"发布"按钮即可。