程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> Subtext(11) -- MetaWeblog API

Subtext(11) -- MetaWeblog API

編輯:.NET實例教程

MetaWeblog API 在 Subtext中應用。

當你讀我的這篇文章的時候,我正用著Windows Live Writer在編輯著文章,並且通過它來發表這篇文章,可以實現這個功能,正因為有MetaWeblog API。

MetaWeblog API定義

MetaWeblog API是一個程序接口,遵循XMLRPC通訊協議,它允許外部程序得到和設置文章的內容和屬性。

順便說句,MetaWeblog API 是Blogger API接口的改進,後者只能得到文章的內容。

ps:關於XMLRPC的相關內容,將在下篇文章給出。

下面結合Subtext中的代碼來看。

 



  public interface IMetaWeblog
  ...{
    [XMLRpcMethod("metaWeblog.editPost",Description="Updates and existing post to a designated blog "
      + "using the metaWeblog API. Returns true if completed.")]
     bool editPost(
      string postid,
      string username,
      string passWord,
      Post post,
      bool publish); 

    [XMLRpcMethod("metaWeblog.getCategorIEs",
      Description="Retrieves a list of valid categorIEs for a post "
      + "using the metaWeblog API. Returns the metaWeblog categorIEs "
      + "struct collection.")]
    CategoryInfo[] getCategorIEs(
      string blogid,
      string username,
      string passWord); 

    [XMLRpcMethod("metaWeblog.getPost",
      Description="RetrIEves an existing post using the metaWeblog "
      + "API. Returns the metaWeblog struct.")]
    Post getPost(
      string postid,
      string username,
      string passWord); 

 [XMLRpcMethod("metaWeblog.getRecentPosts",
      Description="RetrIEves a list of the most recent existing post "
      + "using the metaWeblog API. Returns the metaWeblog struct collection.")]
    Post[] getRecentPosts(
      string blogid,
      string username,
      string passWord,
      int numberOfPosts); 

    [XMLRpcMethod("metaWeblog.newPost",
      Description="Makes a new post to a designated blog using the "
      + "metaWeblog API. Returns postid as a string.")]
    string newPost(
      string blogid,
      string username,
      string passWord,
      Post post,
      bool publish); 

      [XMLRpcMethod("metaWeblog.newMediaObject",
        Description = "Uploads an image, movIE, song, or other media "
        + "using the metaWeblog API. Returns the metaObject struct.")]
      mediaObjectInfo newMediaObject(object blogid, string username, string passWord, mediaObject mediaobject); 

      BloggerAPI Members#region BloggerAPI Members 

      [XMLRpcMethod("blogger.deletePost",
           Description="Deletes a post.")]
      [return: XMLRpcReturnValue(Description="Always returns true.")]
      bool deletePost(
          string appKey,
          string postid,
          string username,
          string passWord,
          [XMLRpcParameter(
               Description="Where applicable, this specifIEs whether the blog "
               + "should be republished after the post has been deleted.")]
          bool publish); 

      [XMLRpcMethod("blogger.getUsersBlogs",
           Description="Returns information on all the blogs a given user "
           + "is a member.")]
      BlogInfo[] getUsersBlogs(
          string appKey,
          string username,
          string passWord); 

      #endregion
  } 

 

先不必理會XMLRpcMethod之類的,簡單理解成調用方法。可以看到IMetaWeblog接口中定義了這麼幾個方法:newPost,getPost,editPost,getCategorIEs,getRecentPosts,另外還有BloggerAPI中的兩個方法:deletePost,getUsersBlogs。

在newPost,getPost裡面有個Post,根據MeteWeblog API的RFC說明,它是一個Struct結構體。同樣mediaObjectInfo,mediaObject,CategoryInfo,BlogInfo,Enclosure,Source等都是結構體,以Post舉例說明。

Post結構體的定義:



  [XMLRpcMissingMapping(MappingAction.Ignore)]
  public struct Post
  ...{
    [XMLRpcMissingMapping(MappingAction.Error)]
    [XMLRpcMember(Description="Required when posting.")]
    public DateTime dateCreated;
    [XMLRpcMissingMapping(MappingAction.Error)]
    [XMLRpcMember(Description="Required when posting.")]
    public string description;
    [XMLRpcMissingMapping(MappingAction.Error)]
    [XMLRpcMember(Description="Required when posting.")]
    public string title;
    [XMLRpcMember("categories", Description="Contains categorIEs for the post.")]
    public string[] categorIEs;
    public Enclosure enclosure;
    public string link;
    public string permalink;
    [XMLRpcMember(
      Description="Not required when posting. Depending on server may "
      + "be either string or integer. "
      + "Use Convert.ToInt32(postid) to treat as integer or "
      + "Convert.ToString(postid) to treat as string")]
    public object postid;       
    public Source source;
    public string userid;
  }

其中創建日期dateCreated、描述description、標題title三個字段是必須的。

另外還想說一點就是newMediaObject這個方法也很重要,對於處理上傳圖片、視頻等媒體文件是個關鍵。通過更改它就可以設置相關屬性,如上傳圖片、視頻位置的選擇等。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved