背景

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

为什么要开发?

现在有很多开源的建站工具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. 泛型(java菜鸟的课堂笔记)

                1. 泛型的简单运 用和意义   2. 泛型的上限与下限   3. 泛型和 子类继承的限制   4. 泛型类和泛型 方法   5. 泛型嵌套和泛型擦除             ...

  2. java学习——平台的安装与部署

    Java 平台安装与部署 jre,jdk安装与部署 1)jre,jdk安装过程(略) 2)部署过程 新建(JAVA_HOME) 变量名:JAVA_HOME 变量值:E:\Program Files ( ...

  3. [转]以新浪为例浅谈XSS

    随着网络时代的飞速发展,网络安全问题越来越受大家的关注,而SQL注入的攻击也随着各种防注入的出现开始慢慢的离我们而去,从而XSS跨站脚本攻击也慢慢的开始在最近几年崛起,也应对了’没有绝对的安全’这句话 ...

  4. php 中的closure用法

    Closure,匿名函数,是php5.3的时候引入的,又称为Anonymous functions.字面意思也就是没有定义名字的函数.比如以下代码(文件名是do.php) <?php funct ...

  5. redis五种数据类型

    string Redis的字符串和其他编程语言或者其他键值存储提供的字符串非常相似. 命令 行为 GET 获取存储在给定键中的值 SET 设置存储在给定键中的值 DEL 删除存储在给定中的值(这个命令 ...

  6. Navicat11全系列激活(注册机)

    Navicat是一款数据库管理工具, 用于简化, 开发和管理MySQL, SQL Server, SQLite, Oracle 和 PostgreSQL 的数据库: Navicat数据模型工具以图形化 ...

  7. 使用DBeaver连接hive

    介绍 在hive命令行beeline中写一些很长的查询语句不是很方便,查询结果也不是很友好,于是找了一个hive的客户端界面工具DBeaver,它也支持很多符合JDBC连接的数据库,例如MySQL.O ...

  8. 带着问题写React Native原生控件--Android视频直播控件

    最近在做的采用React Native项目有一个需求,视频直播与直播流播放同一个布局中,带着问题去思考如何实现,能更容易找到问题关键点,下面分析这个控件解决方法: 现在条件:视频播放控件(开源的ijk ...

  9. Ubuntu下的iptux和Windows下的飞秋互传文件

    1.问题 当Linux下的iptux是安装源里的版本时,存在下面的问题:Windows下的飞秋可以向Linux下的iptux发送文件,iptux接受正常Linux下的iputx给Windows下的飞秋 ...

  10. 本地存储 web storage

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...