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 ...
随机推荐
- asp.net正则表达式学习例子
asp.net 获取网页Document时常会用到 edited by:曹永思-博客园 1.获取某个class的div内的标签 获取<div class="imgList2" ...
- python基础整理笔记(三)
一. python的几种入参形式:1.普通参数: 普通参数就是最一般的参数传递形式.函数定义处会定义需要的形参,然后函数调用处,需要与形参一一对应地传入实参. 示例: def f(a, b): pri ...
- day5----正则
%a 本地(locale)简化星期名称 %A 本地完整星期名称 %b 本地简化月份名称 %B 本地完整月份名称 %c 本地相应的日期和时间 ...
- 【Python自动化运维之路Day4】
abs() 取绝对值all() 所有为真,则为真,否则为假any() 至少有一个为真,就为真,否则为假callable() 判断函数是否可以被调用,如果可以返回True,否则返回False ...
- Kali Linux Web 渗透测试视频教程—第十课 w3af
Kali Linux Web 渗透测试视频教程—第十课 w3af 文/玄魂 原文链接:http://www.xuanhun521.com/Blog/2014/10/24/kali-linux-web- ...
- 基于QT的webkit与ExtJs开发CB/S结构的企业应用管理系统
一:源起 1.何为CB/S的应用程序 C/S结构的应用程序,是客户端/服务端形式的应用程序,这种应用程序要在客户电脑上安装一个程序,客户使用这个程序与服务端通信,完成一定的 ...
- grunt使用小记之开篇:grunt概述
Grunt是什么? Grunt是一个自动化的项目构建工具.如果你需要重复的执行像压缩,编译,单元测试,代码检查以及打包发布的任务.那么你可以使用Grunt来处理这些任务,你所需要做的只是配置好Grun ...
- Msbuild利用cpu多核加速
msbuild /t:Rebuild /p:Configuration=Release /m /m 自动检测cpu数量启动对应数量进程
- iOS JSPatch 热修复使用
概述 一说到热修复,可能很多人会觉得应该很复杂,很难用(我以前是这么觉得的...),实际使用起来蛮简单的,这里以一个小demo演示热修复是如何修复崩溃的,具体更深入的用法,可以看这个https://g ...
- js获取url传递参数
<head> <meta charset="UTF-8"> <title></title> <script type=&quo ...