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

package com.leipei.blogutil;
   2:  
import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
   8:  
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;
  12:  
class MetaweblogPoster {
  14:  
private URL blogUrl;
private XmlRpcClient blogClient;
  17:  
public MetaweblogPoster(URL blogUrl) {
this.blogUrl = blogUrl;
this.initBlogClient();
  21:     }
  22:  
public URL getBlogUrl() {
return blogUrl;
  25:     }
  26:  
/*
     * 初始化博客发送客户端
     */
void initBlogClient() {
this.blogUrl != null) {
new XmlRpcClientConfigImpl();
this.blogUrl);
new XmlRpcClient();
  35:             blogClient.setConfig(config);
  36:         }
  37:     }
  38:  
/*
     * @name 发博文时需要的用户名
     * 
     * @password 发博文时需要的密码
     * 
     * @blogUrl 发博文时对应的metaweblog url
     * 
     * @blog 要发送的博文对象,它存储了博文的标题,分类,标签,内容等信息
     */
public String post(String name, String password, Blog blog) {
try {
  50:  
// Set up parameters required by newPost method
new HashMap<String, Object>();
// 标题
// 分类
// 内容
, name, password, post,
  57:                     Boolean.TRUE };
  58:  
// 发布新博文
this.blogClient.execute(
, params);
 + result);
return result;
catch (Exception e) {
  65:             e.printStackTrace();
);
;
  68:         }
  69:     }
  70:  
/*
     * 此方法用于获取博客网站支持的日志分类,根据xml-rpc定义,获取回来的对象实际上是一个Object数组
     * 每个数组里面包含的是一个HashMap,这个HashMap中存储的是blogcategory的信息
     */
public Object[] getCatogeryObj(String username, String password)
throws MalformedURLException, XmlRpcException {
, username, password };
this.blogClient.execute(
, params);
return resultObj;
  81:  
  82:     }
  83:  
/*
     * 打印博客支持的分类信息
     */
void printBlogCategory(Object[] blogCategory) {
if (blogCategory != null) {
);
for (Object blogCategoryItem : blogCategory) {
  91:                 printBlogCategoryItem((HashMap<String, String>) blogCategoryItem);
  92:                 System.out
);
  94:             }
  95:         }
  96:     }
  97:  
/*
     * 打印每个blogCategoryItem信息
     * 每个blogCategoryItem由categoryid,title,htmlUrl,description,rssUrl构成
     * 至少cnblogs的博客文章分类是如此
     */
void printBlogCategoryItem(HashMap<String, String> blogItem) {
if (blogItem != null & blogItem.isEmpty() == false) {
for (String key : blogItem.keySet()) {
 + blogItem.get(key));
 107:             }
else {
);
 110:         }
 111:  
 112:     }
 113:  
/*
     * 获取博客支持的所有博文分类名,返回的是一个String数组
     */
public String[] getBlogCategoryTitle(Object[] blogCategory) {
if (blogCategory != null) {
new ArrayList<String>(20);
for (Object categoryItem : blogCategory) {
 121:                 categoryTitleList.add((String) ((HashMap) categoryItem)
));
 123:             }
return (String[]) categoryTitleList.toArray();
 125:         }
return null;
 127:     }
 128: }

相关文章: