博客客户端(只支持Metaweblog API)核心功能实现(可以给cnblogs发送博客)

简介:

MetaweblogPoster用来给支持Metaweblog api的博客发送博客文章.目前只实现了获取博文分类和发送博客功能.

   1: package com.leipei.blogutil;
   2:  
   3: import java.net.MalformedURLException;
   4: import java.net.URL;
   5: import java.util.ArrayList;
   6: import java.util.HashMap;
   7: import java.util.Map;
   8:  
   9: import org.apache.xmlrpc.XmlRpcException;
  10: import org.apache.xmlrpc.client.XmlRpcClient;
  11: import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
  12:  
  13: public class MetaweblogPoster {
  14:  
  15:     private URL blogUrl;
  16:     private XmlRpcClient blogClient;
  17:  
  18:     public MetaweblogPoster(URL blogUrl) {
  19:         this.blogUrl = blogUrl;
  20:         this.initBlogClient();
  21:     }
  22:  
  23:     public URL getBlogUrl() {
  24:         return blogUrl;
  25:     }
  26:  
  27:     /*
  28:      * 初始化博客发送客户端
  29:      */
  30:     private void initBlogClient() {
  31:         if (this.blogUrl != null) {
  32:             XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
  33:             config.setServerURL(this.blogUrl);
  34:             this.blogClient = new XmlRpcClient();
  35:             blogClient.setConfig(config);
  36:         }
  37:     }
  38:  
  39:     /*
  40:      * @name 发博文时需要的用户名
  41:      * 
  42:      * @password 发博文时需要的密码
  43:      * 
  44:      * @blogUrl 发博文时对应的metaweblog url
  45:      * 
  46:      * @blog 要发送的博文对象,它存储了博文的标题,分类,标签,内容等信息
  47:      */
  48:     public String post(String name, String password, Blog blog) {
  49:         try {
  50:  
  51:             // Set up parameters required by newPost method
  52:             Map<String, Object> post = new HashMap<String, Object>();
  53:             post.put("title", blog.getTitle());// 标题
  54:             post.put("categories", blog.getCategory());// 分类
  55:             post.put("description", blog.getContent());// 内容
  56:             Object[] params = new Object[] { "default", name, password, post,
  57:                     Boolean.TRUE };
  58:  
  59:             // 发布新博文
  60:             String result = (String) this.blogClient.execute(
  61:                     "metaWeblog.newPost", params);
  62:             System.out.println(" Created with blogid " + result);
  63:             return result;
  64:         } catch (Exception e) {
  65:             e.printStackTrace();
  66:             System.out.println(" UnCreated ");
  67:             return "failed_post";
  68:         }
  69:     }
  70:  
  71:     /*
  72:      * 此方法用于获取博客网站支持的日志分类,根据xml-rpc定义,获取回来的对象实际上是一个Object数组
  73:      * 每个数组里面包含的是一个HashMap,这个HashMap中存储的是blogcategory的信息
  74:      */
  75:     public Object[] getCatogeryObj(String username, String password)
  76:             throws MalformedURLException, XmlRpcException {
  77:         Object[] params = new Object[] { "default", username, password };
  78:         Object[] resultObj = (Object[]) this.blogClient.execute(
  79:                 "metaWeblog.getCategories", params);
  80:         return resultObj;
  81:  
  82:     }
  83:  
  84:     /*
  85:      * 打印博客支持的分类信息
  86:      */
  87:     public void printBlogCategory(Object[] blogCategory) {
  88:         if (blogCategory != null) {
  89:             System.out.println("开始打印博客支持的分类");
  90:             for (Object blogCategoryItem : blogCategory) {
  91:                 printBlogCategoryItem((HashMap<String, String>) blogCategoryItem);
  92:                 System.out
  93:                         .println("-------------------------------------------");
  94:             }
  95:         }
  96:     }
  97:  
  98:     /*
  99:      * 打印每个blogCategoryItem信息
 100:      * 每个blogCategoryItem由categoryid,title,htmlUrl,description,rssUrl构成
 101:      * 至少cnblogs的博客文章分类是如此
 102:      */
 103:     private void printBlogCategoryItem(HashMap<String, String> blogItem) {
 104:         if (blogItem != null & blogItem.isEmpty() == false) {
 105:             for (String key : blogItem.keySet()) {
 106:                 System.out.println(key + ":" + blogItem.get(key));
 107:             }
 108:         } else {
 109:             System.out.println("blogItem is empty!");
 110:         }
 111:  
 112:     }
 113:  
 114:     /*
 115:      * 获取博客支持的所有博文分类名,返回的是一个String数组
 116:      */
 117:     public String[] getBlogCategoryTitle(Object[] blogCategory) {
 118:         if (blogCategory != null) {
 119:             ArrayList<String> categoryTitleList = new ArrayList<String>(20);
 120:             for (Object categoryItem : blogCategory) {
 121:                 categoryTitleList.add((String) ((HashMap) categoryItem)
 122:                         .get("title"));
 123:             }
 124:             return (String[]) categoryTitleList.toArray();
 125:         }
 126:         return null;
 127:     }
 128: }
分类:  Java_Learning


本文转自leipei博客园博客,原文链接:http://www.cnblogs.com/leipei2352/archive/2011/08/30/2159261.html,如需转载请自行联系原作者
目录
相关文章
|
2月前
|
前端开发 JavaScript API
基于React的简易REST API客户端设计与实现
基于React的简易REST API客户端设计与实现
21 3
|
3月前
|
监控 应用服务中间件 API
API 网关的功能用途及实现方式
API 网关的功能用途及实现方式
|
4月前
|
Web App开发 人工智能 前端开发
【Web API系列】使用getDisplayMedia来实现录屏功能
【Web API系列】使用getDisplayMedia来实现录屏功能
71 0
|
8天前
|
存储 缓存 安全
API在Visual Basic中的应用:连接外部服务与扩展功能
【4月更文挑战第27天】本文探讨了在Visual Basic中使用API连接外部服务和扩展功能的方法,涵盖了API的基本概念、种类及如何使用本地和Web API。通过DllImport调用本地API,利用HttpClient和WebClient与Web API交互,同时强调了第三方API的使用和SOA架构中的API角色。安全性、性能优化和错误处理是实践中的关键点。案例研究和最佳实践有助于开发者更有效地利用API,提升Visual Basic应用程序的功能和灵活性。随着API技术的发展,Visual Basic将持续支持开发者创造更强大的应用。
|
6天前
|
SQL 数据管理 API
数据管理DMS产品使用合集之阿里云DMS提供API接口来进行数据导出功能吗
阿里云数据管理DMS提供了全面的数据管理、数据库运维、数据安全、数据迁移与同步等功能,助力企业高效、安全地进行数据库管理和运维工作。以下是DMS产品使用合集的详细介绍。
|
11天前
|
JSON 测试技术 API
Python的Api自动化测试使用HTTP客户端库发送请求
【4月更文挑战第18天】在Python中进行HTTP请求和API自动化测试有多个库可选:1) `requests`是最流行的选择,支持多种请求方法和内置JSON解析;2) `http.client`是标准库的一部分,适合需要低级别控制的用户;3) `urllib`提供URL操作,适用于复杂请求;4) `httpx`拥有类似`requests`的API,提供现代特性和异步支持。根据具体需求选择,如多数情况`requests`已足够。
13 3
|
15天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
27 11
|
19天前
|
JavaScript API
Vue3 API函数及功能
Vue3 API函数及功能
7 0
|
2月前
|
机器学习/深度学习 前端开发 API
实现以图搜货功能,淘宝API开发实战分享
实现以图搜货功能,淘宝API开发实战分享
29 0
|
2月前
|
自然语言处理 API 语音技术
Python加百度语音API实现文字转语音功能
Python加百度语音API实现文字转语音功能
56 0