同步發表於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已經作了封裝。網站