背景

花了一天的时间为某笔记软件开发了一款插件,能够发布笔记到博客园,本文就是记录开发时遇到的问题和解决方案,希望有大佬能开发出更好用的博客编辑器.

为什么要开发?

现在有很多开源的建站工具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>发送中会变成&lt;div&lt;,然后在页面上又变成<div>,但是这样会被解析为HTML标签,所以发送时要发送&amp;lt;div&amp;lt;,这样页面上就是&lt;div&lt;,显示为<div>
  • 我是使用code-prettifyMarkdown.Converter,先把Markdown变成html,再特别地对代码块处理,值得注意的是对于标签类代码,需要先转义后(&lt;div&lt;)才能用code-pretty

图片的请求报文的部分

相关资料

MetaWebBlogApi开发经验的更多相关文章

  1. [转]Linux 的多线程编程的高效开发经验

    Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文中我们 ...

  2. Delphi xe5 手机开发经验(新手级别)

    Delphi xe5 手机开发经验(新手级别) http://diybbs.zol.com.cn/1/34037_699.html http://www.delphitop.com/html/jiqi ...

  3. AngularJS开发经验(转)

    AngularJS是为了克服HTML在构建应用上的不足而设计的.HTML是一门很好的为静态文本展示设计的声明式语言,但要构建WEB应用的话它就显得乏力了.所以我做了一些工作(你也可以觉得是小花招)来让 ...

  4. Linux 的多线程编程的高效开发经验(转)

    http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...

  5. 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 ...

  6. Winform开发几个常用的开发经验及知识积累(一)

    本人做Winform开发多年,孜孜不倦,略有小成,其中收集或者自己开发一些常用的东西,基本上在各个项目都能用到的一些开发经验及知识积累,现逐步介绍一些,以飨读者,共同进步. 1.窗口[×]关闭按钮变为 ...

  7. Linux 的多线程编程的高效开发经验

    http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多 ...

  8. 无开发经验,初学python

    1.无开发经验,初学python   如果你不会其他语言,python是你的第一门语言: A Byte of Python (简明python教程,这个有中文版简明 Python 教程)是非常好的入门 ...

  9. ***iOS 项目的目录结构能看出你的开发经验

    最近有师弟去面试iOS开发,他谈论到,面试官竟然问他怎么分目录结构的,而且还具体问到每个子目录的文件名. 目录结构确实很重要,面试官问他这些无疑是想窥探他的开发经验.清晰的目录结构,可让人一眼知道对应 ...

随机推荐

  1. Principal Components Regression, Pt.1: The Standard Method

    In this note, we discuss principal components regression and some of the issues with it: The need fo ...

  2. LiteIDE灰调配色方案

    说明 本文写于2017-04-03,使用LiteIDE X31(基于Qt 4.8.5),操作系统为Windows. 使用 LiteIDE下载后解压即可使用.配色方案的所有配置文件都位于liteide/ ...

  3. Zepto源码分析-动画(fx fx_method)模块

    源码注释 // Zepto.js // (c) 2010-2015 Thomas Fuchs // Zepto.js may be freely distributed under the MIT l ...

  4. 移动端网页meta设置和响应式

    苏宁易购WAP的meta分析 响应式 meta设置 媒体查询时读的width为viewport的宽度.viewport宽度为手机分辨率.比如note2 1280*720.需要重置为设备 640*360 ...

  5. VR全景智慧城市,平台属于每个有创业梦想的人

    如果你还在人生十字路口迷茫,如果你还想你的人生有所成就,让你的人生有不一样的精彩,就来全景智慧城市平台共同打造属于自己的不同凡响的精彩人生吧! 抓住这个机遇,你就走在了 VR时代的前沿,时势造就英雄, ...

  6. Java常用集合体系以及相互区别

    Collection集合特点: 1.2.1一些 collection 允许有重复的元素,而另一些则不允许 1.2.2一些 collection 是有序的,而另一些则是无序的 [有序是指与添加的顺序一致 ...

  7. Python给多个变量赋值

    # Assign values directly a, b = 0, 1 assert a == 0 assert b == 1 # Assign values from a list (r,g,b) ...

  8. 多线程异步编程示例和实践-Thread和ThreadPool

    说到多线程异步编程,总会说起Thread.ThreadPool.Task.TPL这一系列的技术.总结整理了一版编程示例和实践,分享给大家. 先从Thread和ThreadPool说起: 1. 创建并启 ...

  9. iframe实现自适应高度

    代码简单,兼容性还可以 <script>function SetWinHeight(obj) {  var win=obj;  if (document.getElementById)   ...

  10. 浅谈Ubuntu PowerShell——小白入门教程

    早在去年八月份PowerShell就开始开源跨平台了,但是一直没有去尝试,叫做PowerShell Core. 这里打算简单介绍一下如何安装和简单使用,为还不知道PowerShell Core on ...