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 ...
随机推荐
- Java入门1dayCode
public class HelloWorld { /* * 多行注释方式 * main()方法: java语言的入口方法(函数) */ public static void main(String[ ...
- Excel VBA自动添加证书
---恢复内容开始--- 在说这个话题之前,我先解释一下为什么要加数字证书签名,它有什么作用,后面再解释如何添加.首先解释下证书添加的位置,如下图所示: 1.单击左上角的Office 按钮,选择右下角 ...
- Java中获取路径的各种方法
1. java文件中获得路径 Thread.currentThread().getContextClassLoader().getResource("") //获得资源文件(.cl ...
- 时间格式转化 String2datestyle
时间格式转化成string工具类: package cn.javass.util; import java.text.DateFormat; import java.text.SimpleDateFo ...
- Java写的爬虫的基本程序
这是一个web搜索的基本程序,从命令行输入搜索条件(起始的URL.处理url的最大数.要搜索的字符串),它就会逐个对Internet上的URL进行实时搜索,查找并输出匹配搜索条件的页面. 这个程序的原 ...
- [ASE]Sprint1总结 & Sprint2计划
经历了两周的团队项目,我们进行了一个简单的总结: 对TFS不够重视,第一周几乎没有使用TFS,第二周大部分是将完成了的工作添加到TFS当中. 这也反映了一个问题,就是对项目细节的安排不到位,最开始的时 ...
- Connect教程系列--响应式布局(一)
微软终于跨平台了,最近在第九频道(Event-Visual Studio)下面出来一系列关于vs2015的视频,介绍vs2015以及.NET5.0的新特性等,现针对其讲解的.NET和ASP.NET,进 ...
- 工资低的.Net程序员,活该你工资低
这两天博客园上关于“.Net工资低”的讨论挺多的,让我不禁想起一句话“拉不出屎来怪地球没引力”. 那些抱怨“做.Net工作三年了月薪才6千,我的同学做Java现在都一万二”的哥们,你问问自己“我会什么 ...
- ASP.NET MVC学习之过滤器篇(1)
一.前言 继前面四篇ASP.NET MVC的随笔,我们继续向下学习.上一节我们学习了关于控制器的使用,本节我们将要学习如何使用过滤器控制用户访问页面. 二.正文 以下的示例建立在ASP.NET MVC ...
- C#设计模式总结
一.引言 经过这段时间对设计模式的学习,自己的感触还是很多的,因为我现在在写代码的时候,经常会想想这里能不能用什么设计模式来进行重构.所以,学完设计模式之后,感觉它会慢慢地影响到你写代码的思维方式.这 ...