偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

淺析利用MetaWeblog接口同步多個(gè)博客

開(kāi)發(fā) 前端
很多人有多個(gè)Blog,老是到處Ctrl+C Ctrl+V得絕非我等懶人所為。同步多個(gè)Blog,很輕易想到了運(yùn)用Webservice。技術(shù)雖然簡(jiǎn)單,但有一個(gè)前提,需要博客運(yùn)營(yíng)方支持。本文將淺析如何利用MetaWeblog接口同步多個(gè)博客。

隨著XML-RPC的越來(lái)越流行,MetaWeblog接口幾乎成了目前最流行的離線(xiàn)Blog發(fā)送API.其能通過(guò)標(biāo)準(zhǔn)化的webservice接口,對(duì)任意blog進(jìn)行添刪改。目前,使用MetaWeblog接口發(fā)布離線(xiàn)博客客戶(hù)端中流行的還是windows live writer。這里可以找到一些相關(guān)的設(shè)置方法。

話(huà)說(shuō)回來(lái),如何用metaweblog接口同步多個(gè)blog呢?當(dāng)然你可以直接建立多個(gè)account來(lái)處理,但明顯繁瑣,也不符合我們diy的個(gè)性。

由于我自己個(gè)人Blog是完全自己寫(xiě)的,于是就不由想到了寫(xiě)一個(gè)metaweblog接口能使windows live writer連接上www.dumuzi.cn,再次它之上又增加了轉(zhuǎn)發(fā)模塊,轉(zhuǎn)發(fā)其他Blog,一舉多得。

調(diào)用 

調(diào)用MetaWeblog接口我用到了XML-RPC.NET,一個(gè)開(kāi)源的.Net 庫(kù),用于處理XML-RPC。

相關(guān)的調(diào)用非常簡(jiǎn)單,網(wǎng)上也能找到相應(yīng)的demo。只要實(shí)現(xiàn)IMetaWeblog接口中MetaWeblog 和Blogger 對(duì)應(yīng)的api就行了。

接口

  1. public interface IMetaWeblog   
  2. {   
  3.     #region MetaWeblog API   
  4.  
  5.     [XmlRpcMethod("metaWeblog.newPost")]   
  6.     string AddPost(string blogid, string username, string password, Post post, bool publish);   
  7.  
  8.     [XmlRpcMethod("metaWeblog.editPost")]   
  9.     bool UpdatePost(string postid, string username, string password, Post post, bool publish);   
  10.  
  11.     [XmlRpcMethod("metaWeblog.getPost")]   
  12.     Post GetPost(string postid, string username, string password);   
  13.  
  14.     [XmlRpcMethod("metaWeblog.getCategories")]   
  15.     CategoryInfo[] GetCategories(string blogid, string username, string password);   
  16.  
  17.     [XmlRpcMethod("metaWeblog.getRecentPosts")]   
  18.     Post[] GetRecentPosts(string blogid, string username, string password, int numberOfPosts);   
  19.  
  20.     [XmlRpcMethod("metaWeblog.newMediaObject")]   
  21.     MediaObjectInfo NewMediaObject(string blogid, string username, string password,   
  22.         MediaObject mediaObject);   
  23.  
  24.     #endregion   
  25.  
  26.     #region Blogger API   
  27.  
  28.     [XmlRpcMethod("blogger.deletePost")]   
  29.     [return: XmlRpcReturnValue(Description = "Returns true.")]   
  30.     bool DeletePost(string key, string postid, string username, string password, bool publish);   
  31.  
  32.     [XmlRpcMethod("blogger.getUsersBlogs")]   
  33.     BlogInfo[] GetUsersBlogs(string key, string username, string password);   
  34.  
  35.     [XmlRpcMethod("blogger.getUserInfo")]   
  36.     UserInfo GetUserInfo(string key, string username, string password);   
  37.  
  38.     #endregion   
  39. }  
  40.  
  41. 使用時(shí)只需建立一個(gè)類(lèi),MetaWeblog 實(shí)現(xiàn)其接口的相應(yīng)方法就行了,這樣客戶(hù)端通過(guò)訪問(wèn)之即可post blog了  
  42.  
  43. public class MetaWeblog : XmlRpcService, IMetaWeblog   
  44.   {。。。。}  

給一個(gè)寫(xiě)blog的方法

  1. string IMetaWeblog.AddPost(string blogid, string username, string password,   
  2.     Post post, bool publish)   
  3. {   
  4.  
  5.     if (ValidateUser(username, password))   
  6.     {  
  7.  
  8. ………………省略N行寫(xiě)入自己Blog的內(nèi)容…………………   
  9.  
  10. return postid;  
  11.  
  12.      }   
  13.      else   
  14.      {   
  15.      throw new XmlRpcFaultException(0, "Keyword is not valid!");   
  16.      }  
  17.  

值得注意的是,由于各blog的數(shù)據(jù)結(jié)構(gòu)不同,可能導(dǎo)致部分接口調(diào)用時(shí)含義混淆,比如說(shuō)string blogid原本是指通過(guò)GetUsersBlogs返回的當(dāng)前用戶(hù)的多個(gè)blog中對(duì)應(yīng)的id,但某些blog卻返回的是發(fā)送blog成功后返回的blog標(biāo)記符,即postid

具體的可能需要根據(jù)不同blog具體分析。

轉(zhuǎn)發(fā)

轉(zhuǎn)發(fā)Blog則相對(duì)更為簡(jiǎn)單,只需定義個(gè)轉(zhuǎn)發(fā)接口IMetaWeblogPost 即可

  1. public interface IMetaWeblogPost : IXmlRpcProxy   
  2.   {   
  3.       #region MetaWeblog API   
  4.  
  5.       [XmlRpcMethod("metaWeblog.newPost")]   
  6.       string AddPost(string blogid, string username, string password, Post post, bool publish);   
  7.  
  8.       [XmlRpcMethod("metaWeblog.getCategories")]   
  9.       CategoryInfo[] GetCategories(string blogid, string username, string password);   
  10.  
  11.       [XmlRpcMethod("metaWeblog.newMediaObject")]   
  12.       MediaObjectInfo NewMediaObject(string blogid, string username, string password,   
  13.           MediaObject mediaObject);   
  14.       #endregion   
  15.   } 

調(diào)用非常簡(jiǎn)單 以下給出AddPost方法的實(shí)現(xiàn)

  1. string IMetaWeblog.AddPost(string blogid, string username, string password,   
  2.   Post post, bool publish)   
  3.       {  
  4.  
  5. ………………省略N行寫(xiě)入自己Blog的內(nèi)容…………………  
  6.  
  7.           if (true)//判斷需要轉(zhuǎn)發(fā)   
  8.           {   
  9.  
  10.               try   
  11.               {    
  12.                   weblogpost.Url = "http://www.cnblogs.com/yourname/services/metaweblog.aspx";   
  13.                   weblogpost.AddPost(blogid, name, password, post, publish);   
  14.               }   
  15.               catch   
  16.               {   
  17.                   throw new XmlRpcFaultException(0, "cnblogs sent failed!");   
  18.               }   
  19.           }   
  20.       } 

當(dāng)然你可以定義一些比如同步刪除,同步修改之類(lèi)的功能使用。

通過(guò)以上2步,我們便能輕易通過(guò)MetaWeblog接口發(fā)送自己的blog同時(shí)讓其轉(zhuǎn)發(fā)其他Blog了

【編輯推薦】

  1. 多年網(wǎng)站開(kāi)發(fā)積累的幾點(diǎn)教訓(xùn)和忠告
  2. 08年10大最熱門(mén)的網(wǎng)站開(kāi)發(fā)技術(shù)
  3. 十大最吃香的網(wǎng)站開(kāi)發(fā)技術(shù)
  4. Web 2.0巨頭危機(jī)四伏 領(lǐng)先地位難持續(xù)
  5. Web 2.0應(yīng)用10種商業(yè)模式
責(zé)任編輯:彭凡 來(lái)源: cnblogs
相關(guān)推薦

2009-09-01 18:29:24

C#實(shí)現(xiàn)多個(gè)接口

2009-09-23 17:28:55

Hibernate C

2011-11-19 15:53:59

虛擬化存儲(chǔ)虛擬化網(wǎng)絡(luò)虛擬化

2009-09-24 17:01:06

Javascript獲

2009-07-17 10:59:59

iBATIS接口

2009-08-27 17:33:51

Interface接口

2009-08-31 17:02:28

C#接口編程

2011-12-31 09:37:36

虛擬化處理器虛擬化CPU

2011-06-16 11:23:42

光纖彎曲損耗

2011-05-23 11:19:26

2009-08-28 15:52:23

C#利用sharpzi

2010-01-14 17:13:53

C++接口

2009-08-27 17:59:56

C#接口定義

2009-08-31 16:48:02

C#實(shí)現(xiàn)IDispos

2009-08-07 08:53:52

C# ICloneab

2021-05-13 07:58:05

JDBC接口PreparedSta

2011-06-16 11:15:14

光纖微彎損耗

2010-01-26 09:50:30

C++接口

2009-08-24 15:12:13

C# 泛型接口

2009-09-28 14:45:22

C#接口的定義
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)