MetaWebBlogApi开发经验
背景
花了一天的时间为某笔记软件开发了一款插件,能够发布笔记到博客园,本文就是记录开发时遇到的问题和解决方案,希望有大佬能开发出更好用的博客编辑器.
为什么要开发?
现在有很多开源的建站工具hexo,jekyll等,许多人都喜欢自己建博客,但是自己的博客又没人看,很多为了提高自身知名度的猿发博客时不仅发到自己的博客,也发到简书,博客园等知名社区,显然这种操作是低效的.
以前喜欢为知笔记的发布博客功能,但是他收费后我就弃坑了,转投其他笔记软件。
为了能够方便的“提高知名度”自己开发了发布文章到博客园插件。
另外该笔记软件的名字及其插件短期内不公布,自用。
MetaWeblog Api?
正式的解释我也不多说,也不贴wiki链接,反正知道利用这个Api能发博客,删博客等..
这是个很老的技术,目前支持该api的社区不多,博客园算一个.
可以就把他当做普通的Api用,最直接的不同点是,他发送与接收的数据是XML格式
目前博客园支持的Api有(通过查看博客园api地址可知)
- blogger.deletePost
- blogger.getUsersBlogs
- metaWeblog.editPost
- metaWeblog.getCategories
- metaWeblog.getPost
- metaWeblog.getRecentPosts
- metaWeblog.newMediaObject
- metaWeblog.newPost
- wp.newCategory
可以看出除了metaWeblog还有其他类型Api(没开发到,我也不懂)
请求样例
说了那么多都不如一个请求报文.
这是用PostMan测试时保存的请求体。
这是在测试metaWeblog.getRecentPosts接口,根据博客园api地址中描述,该接口有4个参数
- blogid
- username
- password
- numberOfPosts
在请求时,这些参数必须按序的组织到请求报文中。可能有人会问什么一点要用有<methodCall>
这些节点?…这些都是规范要求的(见文章尾),这个坑也废了我一点时间.
响应报文就不给了,也是xml,需要自己解析,每个Api的请求结果也在博客园api地址中描述了.
经验
- 一般文章都有图片,所以要先找到自己文章中的图片用
metaWeblog.newMediaObject
创建图片,再替换文章中图片的路径 - Api中似乎所有的blogid都可以不填
- 根据规范,请求时会吧请求内容转义,所以如果Markdown代码是HTML,XML标签类的则需另外处理。
比如<div>
发送中会变成<div<
,然后在页面上又变成<div>
,但是这样会被解析为HTML标签,所以发送时要发送&lt;div&lt;
,这样页面上就是<div<
,显示为<div>
- 我是使用
code-prettify
和Markdown.Converter
,先把Markdown变成html,再特别地对代码块处理,值得注意的是对于标签类代码,需要先转义后(<div<
)才能用code-pretty
图片的请求报文的部分
相关资料
MetaWebBlogApi开发经验的更多相关文章
- [转]Linux 的多线程编程的高效开发经验
Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文中我们 ...
- Delphi xe5 手机开发经验(新手级别)
Delphi xe5 手机开发经验(新手级别) http://diybbs.zol.com.cn/1/34037_699.html http://www.delphitop.com/html/jiqi ...
- AngularJS开发经验(转)
AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是小花招)来让 ...
- Linux 的多线程编程的高效开发经验(转)
http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...
- Storm0.9.4安装 - OPEN 开发经验库
Storm0.9.4安装 - OPEN 开发经验库 bin/zkServer.sh start /home/guym/down/kafka_2.8.0-0.8.0/config/zookeeper.p ...
- Winform开发几个常用的开发经验及知识积累(一)
本人做Winform开发多年,孜孜不倦,略有小成,其中收集或者自己开发一些常用的东西,基本上在各个项目都能用到的一些开发经验及知识积累,现逐步介绍一些,以飨读者,共同进步. 1.窗口[×]关闭按钮变为 ...
- Linux 的多线程编程的高效开发经验
http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...
- 无开发经验,初学python
1.无开发经验,初学python 如果你不会其他语言,python是你的第一门语言: A Byte of Python (简明python教程,这个有中文版简明 Python 教程)是非常好的入门 ...
- ***iOS 项目的目录结构能看出你的开发经验
最近有师弟去面试iOS开发,他谈论到,面试官竟然问他怎么分目录结构的,而且还具体问到每个子目录的文件名. 目录结构确实很重要,面试官问他这些无疑是想窥探他的开发经验.清晰的目录结构,可让人一眼知道对应 ...
随机推荐
- springboot 集成spring-session redis 实现分布式session
gradle 添加依赖 compile("org.springframework.session:spring-session:1.3.0.RELEASE") compile(&q ...
- ArrayList实现分组功能
这边只用2个属性来进行分组 定义Object有key与value属性 按照key的不同对于arrayList进行分组 List<Object> tempList=new ArrayList ...
- 让Chrome看不了WWDC直播的HLS技术详解
Requirements: Live streaming uses Apple's HTTP Live Streaming (HLS) technology. HLS requires an iPho ...
- java数据结构(二叉树)
Node节点: public class Node { public long data; public String sData; public Node leftChild; public Nod ...
- cpp(第八章)
1. #include <iostream> inline int add(int &n) { n= n+; ; } int main() { using namespace st ...
- Mac 上所有的命令行相关问题的总结
1. java 系列命令 jdk,jar,war等等文件的执行方式 2. brew 系列命令 安装各种其他程序的命令例如:jenkins,MySQL,openssl brew list 列出所有的 ...
- 最短路径Floyd算法【图文详解】
Floyd算法 1.定义概览 Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被 ...
- 用javascript实现java的Map
function Map(){ var obj={}; //空的容器 //put方法 this.put=function(key,value){ obj[key]=value; //把键值绑定到obj ...
- Vue2 全家桶仿 微信App 项目,支持多人在线聊天和机器人聊天
前言 这个项目是利用工作之余写的一个模仿微信app的单页面应用,整个项目包含27个页面,涉及实时群聊,机器人聊天,同学录,朋友圈等等,后续页面还是开发中.写这个项目主要目的是练习和熟悉vue和vuex ...
- /dev/shm 与 tmpfs
1./dev/shm 与 tmpfs /dev/shm/是linux下一个目录,/dev/shm目录不在磁盘上,而是在内存里, 类型为 tmpfs ,因此使用linux /dev/shm/ 的效率非常 ...