• 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已经做了封装。

    参考

    1. http://www.ibm.com/developerworks/library/x-metablog/
    2. http://www.cnblogs.com/services/metaweblog.aspx#Post
  • 相关阅读:
    谈论软件公司的发展
    几个有用的Sql语句(在Sql Server2000的查询分析器里测试通过)
    热烈祝贺新疆.Net俱乐部博客开通——天下博客开通
    GIS开发随笔(7)——对MapNet控件的几点个人观点
    祝贺所有女性朋友节日快乐
    GIS开发随笔(5)——StudioAT.MapNet.DLL中部分控件的用法
    GIS开发随笔(8)——GIS技术的一点理解和MapNet控件试验
    谈论谜题——关于“恐龙灭绝之谜”的问题
    祝贺新春 喜庆佳节
    Web服务初探:用Demo学Web服务系列(8)——Web服务中Soap消息的相关知识
  • 原文地址:https://www.cnblogs.com/avenwu/p/4299298.html
Copyright © 2020-2023  润新知