Metaweblog在Android上使用
同步发表于http://avenwu.net/2015/02/04/metaweblog
metaweblog是一个博客接口协议,目前主流的博客平台均支持该协议,比如博客园,CSDN,WordPress等。通过约定的协议可以不用登陆相应博客网站,直接用pc客户端直接发布博客文章。
在android上当然也可以使用,利用xml-rpc的java实现库org.apache.xmlrpc:xmlrpc-client可以实现通信。
配置
首先下载xmprpc及其依赖库,这里我用的是gradle管理依赖库:
compile ('org.apache.xmlrpc:xmlrpc-client:3.1.3'){
exclude module: 'xml-apis'
}
由于xml-apis已经包含在android核心框架内,因此为了避免重复的依赖手动声明不包含即可。
另外如果你的项目使用了其他的三方库,可能还会有一些错误,比如META-INF中的文件冲突:
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
一般都比较好处理直接根据错误信息做相应调整;
使用
关于博客平台支持的协议接口一般都可以在官网找到入口,这里以博客园为例:
http://www.cnblogs.com/services/metaweblog.aspx#Post
主要是对博客的增删查改几个借口比较重要:
- blogger.deletePost
- blogger.getUsersBlogs
- metaWeblog.editPost
- metaWeblog.getCategories
- metaWeblog.getPost
- metaWeblog.getRecentPosts
- metaWeblog.newMediaObject
- metaWeblog.newPost
- wp.newCategory
利用xmlrpc可以很方便的调用借口,根据要求传入不同的参数,下面有几个测试接口:
private XmlRpcClient getClient() throws MalformedURLException{
XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
config.setServerURL(new URL("http://www.cnblogs.com/avenwu/services/metablogapi.aspx"));
XmlRpcClient client = new XmlRpcClient();
client.setConfig(config);
return client;
}
public void testMetaWeblogGetCategories() throws MalformedURLException, XmlRpcException{
Object data = getClient().execute("metaWeblog.getCategories", new Object[]{"test", "你的用户名", "你的密码"});
CategoryInfo[] result = Parser.parseCategory(data);
Log.d("testMetaWeblog", result.toString());
}
public void testMetaWeblogGetPost() throws MalformedURLException, XmlRpcException{
Object data = getClient().execute("metaWeblog.getRecentPosts", new Object[]{"test","你的用户名","你的密码", 10});
Post[] result = Parser.parseRecentPost(data);
Log.d("testMetaWeblog", result.toString());
}
public void testMetaWeblogGetUsesBlogs() throws MalformedURLException, XmlRpcException{
Object data = getClient().execute("blogger.getUsersBlogs", new Object[]{"test","你的用户名","你的密码"});
BlogInfo[] result = Parser.parseBloInfo(data);
Log.d("testMetaWeblog", result.toString());
}
public void testMetaWeblogNewPost() throws MalformedURLException, XmlRpcException{
Object data = getClient().execute("metaWeblog.newPost", new Object[]{"用户id","你的用户名","你的密码", getPost(), false});
Log.d("testMetaWeblog", data.toString());
}
public Map<String, Object> getPost(){
Map<String, Object> post = new HashMap<String, Object>();
post.put("dateCreated", Calendar.getInstance().getTime());
post.put("description","#Test Post with metaweblog");
post.put("title", "Test");
return post;
}
public void testMetaWeblogDeletePost() throws MalformedURLException, XmlRpcException {
Object data = getClient().execute("blogger.deletePost", new Object[]{"test","文章id","你的用户名","你的密码", false});
Log.d("testMetaWeblog", data.toString());
}
小结
相关资料不是很多,但是使用上其实并不难,因为apache已经做了封装。
参考
- http://www.ibm.com/developerworks/library/x-metablog/
- http://www.cnblogs.com/services/metaweblog.aspx#Post
Metaweblog在Android上使用的更多相关文章
- 通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击
通杀所有系统的硬件漏洞?聊一聊Drammer,Android上的RowHammer攻击 大家肯定知道前几天刚爆出来一个linux内核(Android也用的linux内核)的dirtycow漏洞.此洞可 ...
- 在Android上使用qemu-user运行可执行文件
在Android上使用qemu-user运行可执行文件 作者:寻禹@阿里聚安全 前言 QEMU简要介绍: QEMU可以解释执行可执行程序.既然QEMU可以解释执行可执行程序,那么QEMU就能够知道执行 ...
- 编译可在Android上运行的qemu user mode
前言 本文在Ubuntu 64位系统上对qemu项目进行交叉编译,并且只编译与qemu user mode有关的代码. 下文中的”NDK”若无特殊说明均指”Android NDK”. 下文中”$NDK ...
- 系列篇|编译可在Android上运行的依赖库(一):glib库
前言 这是系列文章,它们由<编译可在Android上运行的glib库>及其他4篇文章组成,这4篇文章在“编译依赖库”一节中列出.由于glib库依赖于其他第三方库,所以需要先将依赖的第三方库 ...
- EasyTouch绑定事件在电脑上点击有效Android上无效的解决方法
最近做一个RPG类的游戏发现使用EasyTouch虚拟摇杆插件在电脑上点击有效Android上无效,查找资料发现是Easy Joystick中的一个属性interaction type要设置成 Dir ...
- TensorFlow 在android上的Demo(1)
转载时请注明出处: 修雨轩陈 系统环境说明: ------------------------------------ 操作系统 : ubunt 14.03 _ x86_64 操作系统 内存: 8GB ...
- Android上dip、dp、px、sp等单位说明(转)
dip device independent pixels(设备独立像素). 不同设备不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA.HVGA和QVGA 推荐使用这个,不依赖像素. 在 ...
- Android上dip、dp、px、sp等单位说明
Android上dip.dp.px.sp等单位说明 dip device independent pixels(设备独立像素). 不同设备不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA ...
- Android上的MVP:如何组织显示层的内容
MVP(Model View Presenter)模式是著名的MVC(Model View Controller)模式的一个演化版本,目前它在Android应用开发中越来越重要了,大家也都在讨论关于M ...
随机推荐
- 【07_226】Invert Binary Tree
Invert Binary Tree Total Accepted: 54994 Total Submissions: 130742 Difficulty: Easy Invert a binary ...
- HttpClient读取ASP.NET Web API错误信息的简单方法
在C#中,用HttpClient调用Web API并且通过Content.ReadAsStringAsync()读取响应内容时,如果出现500错误(InternalServerError),会得到一个 ...
- Unity3.0基于约定的自动注册机制
前文<Unity2.0容器自动注册机制>中,介绍了如何在 Unity 2.0 版本中使用 Auto Registration 自动注册机制.在 Unity 3.0 版本中(2013年),新 ...
- 解读SQL 内存数据库的细节
相信大家对内存数据库的 概念并不陌生,之前园子里也有多位大牛介绍过SQL内存数据库的创建方法,我曾仔细 拜读过,有了大致了解,不过仍有很多细节不清晰,比如: (1)内存数据库是把整个数据库放到内存中的 ...
- Linux:Vim
模式介绍: Vim具备6种基本模式和5中派生模式. 普通模式 启动后的默认模式,用于:移动光标.删除文本等待,常用命令: dd:删除当前行. [number]dd:连续执行number对应次数的dd命 ...
- SharePoint Client Object Model API 介绍以及工作原理解析
CSOM和ServerAPI 的对比 SharePoint从2010开始引入了Client Object Model的API(后文中用CSOM来代替),从名字来看,我们可以简单的看出,该API是面向客 ...
- VR快速发展下,从业者如何把握机会?
美国科技博客VentureBeat周末刊登赛斯·沙赫纳(Seth Schachner)的文章,分析了在虚拟现实快速发展的情况下,业内所面临的机会,以及如何把握这些机会. 沙赫纳是资深的数字战略 ...
- 如何绕过chrome的弹窗拦截机制
如何绕过chrome的弹窗拦截机制 在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的.举个例子: var btn = $('#btn'); btn.click(fun ...
- 成功安装mysql后,为何服务管理器里找不到MYSQL服务名
1.打开cmd,切换到mysql的bin目录下 2. D:\Program Files\MySQL5.1\bin>mysqld.exe -installService successfully ...
- SQL 2012 镜像 图解(解决1418)
概念:http://blog.chinaunix.net/uid-11231963-id-2150268.html 写的不错 1.环境准备 1.WIN7+SQL 2012 两台机器 如:10.58.8 ...