如今,许多人都熟悉个人和公司或业界主办的博客。后者明显成为了传统公司和行业网站的下一代新兴产物。博客的内容涉及从简洁的特制产品公告和公共关系到实用且深刻的主题探索,这些主题可能对公司的产品或行业的未来方向相关。
随着实际提供更新和有用信息的企业和行业博客的成功推出,人们越来越注重将博客作为企业内部的通信和讨论机制。采用博客的组织应该将博客相关任务部署在企业 IT 基础设施附近,就像任何其他增强一样。企业内部博客通常包含与业务相关的讨论和信息,必须由组织的 IT 人员管理。选者正确的博客平台是关键的第一步。
选择支持开放博客 API 的开放平台能够为用户和管理员带来显著的优势。对于用户,这意味着他们可以使用广泛的流行应用程序(从浏览器插件到特定于平台的客户端应用程序)添加博客文章。对于管理员,支持公共 API 可以支持使用或开发管理性应用程序。
有许多标准博客 API 可供使用。在编写本文时,使用最广泛且支持最广泛的 API 包括:
<item>
标签)、以结构化数据(而不是 Blogger API
支持的简单字符串)形式查看博客文章等概念。这种集成使开发人员能够使用熟悉的模型创建、提交、管理和查询结构化博客文章。<link>
标签来发现
API。参见 参考资料 了解关于此协议的更多信息。本文主要介绍 MetaWeblog。
支持 MetaWeblog API 的最流行的博客软件包都是开源的,因此可以在面向内部的企业基础设施中安装和使用。流行的选择包括:
决定最初使用哪个包取决于您的 Web 基础设施针对的是 Web 服务器还是应用服务器。WordPress 和 Movable Type 能够迅速识别经验丰富的博客作者,BLOG:CMS 和 Drupal 仅需要一个 Web 服务器。Blojsom、Pebble 和 Roller 都是流行的博客包,它们都需要一个应用服务器,但它们的关系数据库需求各不相同(Pebble 不需要关系数据库!)。
MetaWeblog API 支持使用任何支持它的软件包发布、检索和编辑博客文章。许多人只是通过博客提供的编辑器在线创建博客文章,而 MetaWeblog API 支持使用更加丰富的编辑软件,从桌面包到基于浏览器的包,比如 ScribeFire(将在 本文后面的内容中 讨论)。MetaWeblog API 还简化了系统管理对博客文章的备份和归档,简化了在必要时迁移到其他博客包的过程。
该 API 包含比较少的方法。这些方法简化了对该 API 的掌握,它们包括:
boolean metaWeblog.editPost(string postid, string username, string password, struct content, boolean publish)
struct metaWeblog.getCategories(string blogid, string username, string password)
struct metaWeblog.getPost(string postid, string username, string password)
struct metaWeblog.getRecentPosts(string postid, string username, string password, integer numberOfPosts)
struct metaWeblog.newMediaObject(string blogid, string username, string password, struct content)
string Post metaWeblog.newPost(string blogid, string username, string password, struct content, boolean publish)
这些方法的参数包括:
blogid
。标识您想要连接到的博客。content
。一种包含博客文章数据的结构。
已为此结构定义的成员包括 RSS 2.0
中 <item>
类型的可能值:author
、category
、comments
、description
、enclosure
、guid
、link
、pubDate
、source
和title
。这些标准值形成一个广泛流行的博客内容和元数据字典。enclosure
等具有强制属性的
RSS 项通过一种结构来传输,这种结构的成员提供了这些值。对于博客文章,这种结构的 3
个主要成员包括 title
、link
和 description
。
newMediaObject
方法支持将一个文件(通常是音频或视频文件)传输到博客服务器。此方法要求您提供的结构包含成员 bits(文件的实际内容,采用
base64 编码格式)、name(在博客服务器上使用的文件名)和 type(文件的 MIME
类型)。
numberOfPosts
。指定要检索的最大博客数量。password
。指定想要用于验证博客的密码。postid
。标识想要编辑或检索的特定博客文章。publish
。指定您希望发布博客文章 (True)
还是将新的/更新的博客文章存储为草稿 (False)。username
。指定想要用于验证博客的用户名。metaWeblog
方法返回以下参数:
editPost
。始终返回 True。getCategories
。返回一个机构体,它标识了每个可用的类别,具有 3
个字符串成员:description
、htmlUrl
和 rssUrl
。getPost
。返回具有成员的结构体,这些成员也可在以参数形式提供给 newPost
和 editPost
方法的结构体中使用。getRecentPosts
。返回一个与最近的博客文章对应的结构体数组。数组中的每个结构体包含的成员与调用 getPost
返回的成员相同。newMediaObject
。返回一个结构体,其中包含一个名为 url
的成员,该成员使用
HTTP 或 FTP 格式提供文件的 URL。newPost
。返回一个字符串,该字符串可用作对 editPost
或 getPost
的调用中的 blogid
。API 的描述非常有趣,但并不涉及到实际实例,这在一些情形中带来了不便,尤其是在该 API 的使用需要使用另一个可能不熟悉的 API 时,比如本例中的
XML-RPC API。后面两节主要介绍如何使用最流行的 MetaWeblog
方法 newPost
,以各种方式创建新博客文章。
清单
1 中的示例给出了一个非常简单的 metaWeblog.newPost
方法调用。
import java.util.*; import java.io.*; import java.net.URL; import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; public class DemoPost { public static void main(String[] args) throws Exception { // Set up XML-RPC connection to server XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL("http://wordpress-host/wordpress/xmlrpc.php")); XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); // Set up parameters required by newPost method Map<String, String> post = new HashMap<String, String>(); post.put("title", "Hello, Blog!"); post.put("link", "http://www.vonhagen.org/"); post.put("description", "This is the content of a trivial post."); Object[] params = new Object[]{"1", "admin", "password", post, Boolean.TRUE}; // Call newPost String result = (String) client.execute("metaWeblog.newPost", params); System.out.println(" Created with blogid " + result); } }
主方法中的第一段代码配置 MetaWeblog 使用的 XML-RPC 基础设施,建立到 URL http://wordpress-host/wordpress/xmlrpc.php 的客户端连接,该 URL 是我的示例 WordPress 博客服务器的 XML-RPC URL。不同的博客服务器会使用不同的 XML-RPC URL。可以通过查看您选择的博客服务器的文档,获取您需要的特定 URL。
第二段代码创建一个 hash
映射并使用名称-值对填充它,这些名称-值对提供了创作博客文章所需的信息。设置了 title
、link
和 description
设置的值之后,hash
映射就会与 metaWeblog.newPost
方法需要的其他参数一起打包到一个数组中。
第三段代码使用在第一段代码中创建的 XML-RPC
客户端连接实际调用 metaWeblog.newPost
方法。然后,此代码打印该方法返回的字符串,也就是创建的远程博客文章的 blogid
。
上一个示例很有趣,但通过发布单一、简短的字符串来以博客格式重新实现 Twitter 可能非常慢。您可能更希望使用您熟悉的文本编辑器创建文件,然后使用自定义标题将该文件发布到博客上。
清单
2 中的示例以 前一个示例 为基础,展示了在 metaWeblog.newPost
方法上的创新,支持您发布文件的内容,而且可以指定文章标题。在执行应用程序时,在命令行上指定这些项。
import java.util.*; import java.io.*; import java.net.URL; import org.apache.xmlrpc.XmlRpcException; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; public class DemoPostFile { private static byte[] readFromFile(String src) throws Exception { byte data[]; File file = new File(src); InputStream in = new FileInputStream(src); data = new byte[(int)file.length()]; in.read(data); in.close(); return data; } public static void main(String[] args) throws Exception { String filename = null; String title = "Sample Post From a File"; // Parse and apply command-line args if (args.length > 1) { filename = args[0]; title = args[1]; } else if (args.length == 1) { filename = args[0]; title = "Posted From File: " + filename; } else { System.out.println("Usage: DemoPostFile filename [title] "); return; } // Set up XML-RPC connection to server XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); config.setServerURL(new URL("http://wordpress-host/wordpress/xmlrpc.php")); XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); // Read post from file and set up parameters required // by newPost method String bits = new String(readFromFile(filename)); System.out.println(bits); Map<String, String> post = new HashMap<String, String>(); post.put("title", title); post.put("description", bits); Object[] params = new Object[]{"1", "admin", "password", post, true}; // Call newPost String result = (String) client.execute("metaWeblog.newPost", params); System.out.println(" Created with blogid " + result); } }
此应用程序中的第一个方法是一个 readFromFile
应用程序,它在这里被声明为静态的,以将其与静态主方法的命令行参数解析轻松集成在一起。
此应用程序的主方法中的第一段代码初始化两个变量,这两个变量用于包含博客文章的文件名称,应用程序将这两个变量与文章标题一起发布。它然后解析应用程序用于执行调用的参数,确定是否存在文件名和/或标题,并相应做出反应。
接下来的代码初始化到博客服务器的 XML-RPC
客户端连接。后面的代码将在命令行上指定的文章内容读取到一个变量中,并设置使用 metaWeblog.newPost
方法所需的其他变量。最后一段代码调用此方法并打印结果代码,也就是博客服务器上的文章的 blogid
。
上一节 中提供的这种简单实用工具并不适用于所有人:不是所有人都希望构建自己的工具,更不用说从传统命令行执行程序了。运行使用标准 API(比如 MetaWeblog)的博客程序的主要原因包括,可以使用各种不同的应用程序,以不同语言编写,以及在不同的操作系统和环境中执行。许多博客客户端都具有自己的功能和追随者,可以使用它们简化博客文章的创建和发布。
一个最实用的 MetaWeblog 客户端就是 ScribeFire(参见 参考资料),它是一个 Mozilla Firefox 插件,在 Firefox 中提供了功能全面的博客编辑器,简化了博客的发布,甚至支持从其他网页或文档拖放带格式的文本,上传图像等功能。图 1 展示了如何使用 ScribeFire(位于 Firefox 窗口的底部)来将文章发布到 WordPress 博客(位于 Firefox 窗口的顶部)。
MetaWeblog 客户端通常也支持您配置到多个博客的连接,在不同的博客中发布相同的内容。这项功能极大地简化了将博客从内部企业博客传输到外部企业博客的过程。图 2 展示了如何使用 ScribeFire(位于 Firefox 窗口的底部)将 图 1 中显示的相同内容发布到 Pebble 博客(位于 Firefox 窗口的顶部)。
本文中提供和讨论的示例实用工具只是强大的 MetaWeblog 的冰山一角。您可以使用支持 MetaWeblog API 的任何实用工具来与支持该 API 的任何博客服务器通信。您也可以以 MetaWeblog API 为核心来实现博客服务器,Pebble 博客服务器就是这么做的(参见 参考资料)。
Pebble 博客服务器是一个 BSD (Berkeley Software Distribution) 许可的包,基于 MetaWeblog 编写。因为 Pebble 是开源的,所以它的代码可以免费下载,可以提供许多使用各种 MetaWeblog 调用的有用示例。图 3 给出了标准的 Pebble 界面。
Pebble 的一个有趣方面在于,Pebble 服务器上的博客内容存储为 XML 文件,而不是像大部分其他博客服务器那样存储在数据库中。不需要数据库服务器使 Pebble 在系统资源需求方面比其他博客服务器更加轻量,它也简化了备份等任务。博客文章被备份为标准文件系统的一部分,而不需要数据库转储或检查点。
企业博客并不是适用于所有企业信息类型的完美交付机制,但它们奠定了现代企业通信和讨论的基础。在选择企业博客服务器时,传统的考虑因素包括成本、可维护性和实用性。从本文可以看到,您的博客服务器支持的 API 与决策考虑因素同等重要。选择支持 MetaWeblog 等标准 API 的博客服务器可以在博客实用性方面提供显著的长期优势,因为它使人们能够使用许多不同的客户端来向这类中央资源创作和编辑博客文章。这种灵活性常常会决定人们是否使用博客。
描述 | 名字 | 大小 |
---|---|---|
简单 MetaWeblog 发布应用程序 | DemoPost.java.zip | 2KB |
发布文件内容的 MetaWeblog 应用程序 | DemoPostFile.java.zip | 2KB |
转 MetaWeblog API 编写,码迷,mamicode.com
原文地址:http://www.cnblogs.com/rongfengliang/p/3700562.html