日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
淺析利用MetaWeblog接口同步多個博客

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

話說回來,如何用metaweblog接口同步多個blog呢?當然你可以直接建立多個account來處理,但明顯繁瑣,也不符合我們diy的個性。

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

調用

調用MetaWeblog接口我用到了XML-RPC.NET,一個開源的.Net 庫,用于處理XML-RPC。

相關的調用非常簡單,網上也能找到相應的demo。只要實現IMetaWeblog接口中MetaWeblog 和Blogger 對應的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. 使用時只需建立一個類,MetaWeblog 實現其接口的相應方法就行了,這樣客戶端通過訪問之即可post blog了  
  42.  
  43. public class MetaWeblog : XmlRpcService, IMetaWeblog   
  44.   {。。。。}  

給一個寫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行寫入自己Blog的內容…………………   
  9.  
  10. return postid;  
  11.  
  12.      }   
  13.      else   
  14.      {   
  15.      throw new XmlRpcFaultException(0, "Keyword is not valid!");   
  16.      }  
  17.  

值得注意的是,由于各blog的數據結構不同,可能導致部分接口調用時含義混淆,比如說string blogid原本是指通過GetUsersBlogs返回的當前用戶的多個blog中對應的id,但某些blog卻返回的是發(fā)送blog成功后返回的blog標記符,即postid

具體的可能需要根據不同blog具體分析。

轉發(fā)

轉發(fā)Blog則相對更為簡單,只需定義個轉發(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.   } 

調用非常簡單 以下給出AddPost方法的實現

 
 
 
  1. string IMetaWeblog.AddPost(string blogid, string username, string password,   
  2.   Post post, bool publish)   
  3.       {  
  4.  
  5. ………………省略N行寫入自己Blog的內容…………………  
  6.  
  7.           if (true)//判斷需要轉發(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.       } 

當然你可以定義一些比如同步刪除,同步修改之類的功能使用。

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


網站題目:淺析利用MetaWeblog接口同步多個博客
分享路徑:http://www.5511xx.com/article/dphghji.html