同步发表于http://avenwu.net/2015/02/04/metaweblogjava
metaweblog是一个博客接口协议,目前主流的博客平台均支持该协议,好比博客园,CSDN,WordPress等。经过约定的协议能够不用登录相应博客网站,直接用pc客户端直接发布博客文章。
在android上固然也可使用,利用xml-rpc的java实现库org.apache.xmlrpc:xmlrpc-client能够实现通讯。android
首先下载xmprpc及其依赖库,这里我用的是gradle管理依赖库:web
compile ('org.apache.xmlrpc:xmlrpc-client:3.1.3'){ exclude module: 'xml-apis' }
因为xml-apis已经包含在android核心框架内,所以为了不重复的依赖手动声明不包含便可。
另外若是你的项目使用了其余的三方库,可能还会有一些错误,好比META-INF中的文件冲突:apache
packagingOptions { exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/LICENSE' exclude 'META-INF/NOTICE' }
通常都比较好处理直接根据错误信息作相应调整;api
关于博客平台支持的协议接口通常均可以在官网找到入口,这里以博客园为例:框架
http://www.cnblogs.com/services/metaweblog.aspx#Postpost
主要是对博客的增删查改几个借口比较重要:测试
利用xmlrpc能够很方便的调用借口,根据要求传入不一样的参数,下面有几个测试接口:gradle
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已经作了封装。网站