MetaWeblog--BLOG离线编辑的简单实现

  在我国应用较为广泛的有Zoundry Blog Writer和微软的windows live write两个blog离线编辑器,而以上两个离线编辑器都对metaweblog有着良好的支持,因此我们采用metablog不失为一个快速实现blog离线编辑的好办法。

MetaWeblog-简介

   MetaWeblog 是BLOG离线编辑(包括上传和下载删除等基本功能)的接口规范,它建立在XML-RPC通信协议之上。MetaWeblog发展和继承了Blogger API。

首先我们要创建 zblog或live write 请求的API URL也就是Servlet (webservices),(笔者建议下载(Roller )的原代码以做参考。roller中metablog的webservices实现可做参考),代码如下:

  1.   
  2. import java.io.BufferedReader;   
  3. import java.io.IOException;   
  4. import java.io.InputStream;   
  5. import java.io.InputStreamReader;   
  6. import java.io.OutputStream;   
  7. import java.io.StringBufferInputStream;   
  8.   
  9. import javax.servlet.ServletConfig;   
  10. import javax.servlet.ServletException;   
  11. import javax.servlet.http.HttpServlet;   
  12. import javax.servlet.http.HttpServletRequest;   
  13. import javax.servlet.http.HttpServletResponse;   
  14.   
  15. import org.apache.commons.logging.Log;   
  16. import org.apache.commons.logging.LogFactory;   
  17. import org.apache.xmlrpc.XmlRpcServer;   
  18.   
  19.   
  20. /**  
  21.  * Roller's XML RPC Servlet sets up XmlRpcHandler for Blogger & MetaWeblog API.  
  22.  *  
  23.  * @web.servlet name="RollerXMLRPCServlet"  
  24.  * @web.servlet-mapping url-pattern="/roller-services/xmlrpc"  
  25.  */  
  26. public class RollerXMLRPCServlet extends HttpServlet {   
  27.        
  28.     static final long serialVersionUID = -4424719615968330852L;   
  29.        
  30.     private static Log mLogger = LogFactory.getLog(RollerXMLRPCServlet.class);   
  31.        
  32.     private transient XmlRpcServer mXmlRpcServer = new XmlRpcServer();   
  33.     private BloggerAPIHandler mBloggerHandler = null;   
  34.     private MetaWeblogAPIHandler mMetaWeblogHandler = null;   
  35.        
  36.        
  37.     /**  
  38.      * Initializes the servlet.  
  39.      */  
  40.     public void init(ServletConfig config) throws ServletException {   
  41.            
  42.         super.init(config);   
  43.         try {   
  44.              
  45.             org.apache.xmlrpc.XmlRpc.setDebug(true);  //是否输出DUG信息 
  46.             org.apache.xmlrpc.XmlRpc.setEncoding("UTF8");              
  47.             mBloggerHandler = new BloggerAPIHandler();   
  48.             mXmlRpcServer.addHandler("blogger", mBloggerHandler);   
  49.                
  50.             mMetaWeblogHandler = new MetaWeblogAPIHandler();   
  51.             mXmlRpcServer.addHandler("metaWeblog", mMetaWeblogHandler);   
  52.         } catch (Exception e) {   
  53.             mLogger.error("Initialization of XML-RPC servlet failed", e);   
  54.         }   
  55.     }   
  56.        
  57.       
  58.     protected void service(HttpServletRequest request,   
  59.             HttpServletResponse response)   
  60.             throws ServletException, IOException {   
  61.   //请求以流的形式得到,所以在此监测不到任何的请求参数(XML-RPC通信协议) 
  62.         InputStream is = request.getInputStream();   
  63.   //将请求交由mXmlRpcServer.execute处理。
  64.         byte[] result = mXmlRpcServer.execute(is);   
  65.            
  66.         if (mLogger.isDebugEnabled()) {   
  67.             String output = new String(result);   
  68.             mLogger.debug(output);   
  69.         }   
  70.            
  71.         response.setContentType("text/xml");   
  72.         response.setContentLength(result.length);   
  73.         OutputStream output = response.getOutputStream();   
  74.         output.write(result);   
  75.         output.flush();   
  76.     }   
  77.        
  78. }  

 

 待续...

 

 

java 代码
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值