MetaWeblog API调用

http://rpc.cnblogs.com/metaweblog/webenh

 

 

在网上闲逛,突然对博客的接口感兴趣,经考察,多数博客都对metaWeblog Api 提供了支持,虽然windows live writer是好用,不过出于对这个接口的好奇,也想自己做个能发博客的小工具.

到处浏览资料,用了一个下午终于成功发布了一篇简陋版博客:)。其实很简单,方法对了很快就连上了。

MetaWeblog API中文说明

1、什么是MetaWeblog API?

MetaWeblog API(MWA)是一个Blog程序接口标准,允许外部程序来获取或者设置Blog的文字和熟悉。他建立在XMLRPC接口之上,并且已经有了很多的实现。

2、基本的函数规范

有三个基本的函数规范:

metaWeblog.newPost (blogid, username, password, struct, publish) 返回一个字符串,可能是Blog的ID。
metaWeblog.editPost (postid, username, password, struct, publish) 返回一个Boolean值,代表是否修改成功。
metaWeblog.getPost (postid, username, password) 返回一个Struct。

其中blogid、username、password分别代表Blog的id(注释:如果你有两个Blog,blogid指定你需要编辑的blog)、用户名和密码。

 

一、要引用的DLL【网上提供的示例多包含了这个DLL】

image

二、要实现的数据结构

 MetaWeblogCode【如不想看代码请自行折叠】

复制代码
  1 using System;
  2 using CookComputing.XmlRpc;
  3 
  4 namespace metaWeblogTest
  5 {
  6 
  7     #region 微软MSN网站 使用的 MetaWeblog API.
  8     /// 这个结构代表用户的博客基本信息
  9     /// 
10     [XmlRpcMissingMapping(MappingAction.Ignore)]
11     public struct UserBlog
12     {
13         public string url;
14         public string blogid;
15         public string blogName;
16     }
17 
18 
19     ///  
20     /// 这个结构代表用户信息
21     /// 
 
22     [XmlRpcMissingMapping(MappingAction.Ignore)]
23     public struct UserInfo
24     {
25         public string url;
26         public string blogid;
27         public string blogName;
28         public string firstname;
29         public string lastname;
30         public string email;
31         public string nickname;
32     }
33 
34 
35     ///  
36     /// 这个结构代表博客分类信息
37     /// 这后面的getCategories()方法会取到CATEGORY数据。
38     /// 
 
39     [XmlRpcMissingMapping(MappingAction.Ignore)]
40     public struct Category
41     {
42         public string description;
43         public string title;
44     }
45 
46     ///   47     /// 这个结构代表博客( 文章 )信息。 48     /// 这后面的 editPost()方法, getRecentPosts()方法 和 getPost()方法 会取倒POST数据 .  49     ///   50     [XmlRpcMissingMapping(MappingAction.Ignore)] 51     public struct Post 52     { 53         public DateTime dateCreated; 54         public string description; 55         public string title; 56         public string postid; 57         public string[] categories; 58     } 59     #endregion 60  61  62     #region 网站:http://msdn.microsoft.com/en-us/library/aa905670.aspx 63     /////   64     ///// 微软MSN网站 使用的 MetaWeblog API.  65     ////  网站:http://msdn.microsoft.com/en-us/library/aa905670.aspx 66     /////   67     public class M_MetaWeblog : XmlRpcClientProtocol 68     { 69  70  71         ///   72         /// Returns the most recent draft and non-draft blog posts sorted in descending order by publish date.  73         ///   74         ///  This should be the string MyBlog, which indicates that the post is being created in the user’s blog.   75         ///  The name of the user’s space.   76         ///  The user’s secret word.   77         ///  The number of posts to return. The maximum value is 20.   78         ///   79         /// TODO:得到最近发布的帖子 80         [XmlRpcMethod("metaWeblog.getRecentPosts")] 81         public Post[] getRecentPosts( 82         string blogid, 83         string username, 84         string password, 85         int numberOfPosts) 86         { 87  88             return (Post[])this.Invoke("getRecentPosts", new object[] { blogid, username, password, numberOfPosts }); 89         } 90  91  92         ///   93         /// Posts a new entry to a blog.  94         ///   95         ///  This should be the string MyBlog, which indicates that the post is being created in the user’s blog.   96         ///  The name of the user’s space.   97         ///  The user’s secret word.   98         ///  A struct representing the content to update.   99         ///  If false, this is a draft post.   100         ///  The postid of the newly-created post.   101         /// TODO:增加一个最新的帖子 102         [XmlRpcMethod("metaWeblog.newPost")] 103         public string newPost( 104         string blogid, 105         string username, 106         string password, 107         Post content, 108         bool publish) 109         { 110  111             return (string)this.Invoke("newPost", new object[] { blogid, username, password, content, publish }); 112         } 113  114         ///   115         /// Edits an existing entry on a blog.  116         ///   117         ///  The ID of the post to update.   118         ///  The name of the user’s space.   119         ///  The user’s secret word.   120         ///  A struct representing the content to update.   121         ///  If false, this is a draft post.   122         ///  Always returns true.   123         /// TODO:更新一个帖子 124         [XmlRpcMethod("metaWeblog.editPost")] 125         public bool editPost( 126         string postid, 127         string username, 128         string password, 129         Post content, 130         bool publish) 131         { 132  133             return (bool)this.Invoke("editPost", new object[] { postid, username, password, content, publish }); 134         } 135  136         ///   137         /// Deletes a post from the blog.  138         ///   139         ///  This value is ignored.   140         ///  The ID of the post to update.   141         ///  The name of the user’s space.   142         ///  The user’s secret word.   143         ///  A struct representing the content to update.   144         ///  This value is ignored.   145         ///  Always returns true.   146         /// TODO:删除一个帖子 147         [XmlRpcMethod("blogger.deletePost")] 148         public bool deletePost( 149         string appKey, 150         string postid, 151         string username, 152         string password, 153         bool publish) 154         { 155  156             return (bool)this.Invoke("deletePost", new object[] { appKey, postid, username, password, publish }); 157         } 158  159  160         ///   161         /// Returns information about the user’s space. An empty array is returned if the user does not have a space.  162         ///   163         ///  This value is ignored.   164         ///  The ID of the post to update.   165         ///  The name of the user’s space.   166         ///  167         ///  An array of structs that represents each of the user’s blogs. The array will contain a maximum of one struct, since a user can only have a single space with a single blog.   168         /// TODO:得到用户的博客清单 169         [XmlRpcMethod("blogger.getUsersBlogs")] 170         public UserBlog[] getUsersBlogs( 171         string appKey, 172         string username, 173         string password) 174         { 175  176             return (UserBlog[])this.Invoke("getUsersBlogs", new object[] { appKey, username, password }); 177         } 178  179         ///   180         /// Returns basic user info (name, e-mail, userid, and so on).  181         ///   182         ///  This value is ignored.   183         ///  The ID of the post to update.   184         ///  The name of the user’s space.   185         ///  186         ///  A struct containing profile information about the user.  187         /// Each struct will contain the following fields: nickname, userid, url, e-mail,  188         /// lastname, and firstname.   189         /// TODO:得到用户信息 190         [XmlRpcMethod("blogger.getUserInfo")] 191         public UserInfo getUserInfo( 192         string appKey, 193         string username, 194         string password) 195         { 196  197             return (UserInfo)this.Invoke("getUserInfo", new object[] { appKey, username, password }); 198         } 199  200  201         ///   202         /// Returns a specific entry from a blog.  203         ///   204         ///  The ID of the post to update.   205         ///  The name of the user’s space.   206         ///  The user’s secret word.   207         ///  Always returns true.   208         /// TODO:获取一个帖子 209         [XmlRpcMethod("metaWeblog.getPost")] 210         public Post getPost( 211         string postid, 212         string username, 213         string password) 214         { 215  216             return (Post)this.Invoke("getPost", new object[] { postid, username, password }); 217         } 218  219         ///   220         /// Returns the list of categories that have been used in the blog.  221         ///   222         ///  This should be the string MyBlog, which indicates that the post is being created in the user’s blog.   223         ///  The name of the user’s space.   224         ///  The user’s secret word.   225         ///  An array of structs that contains one struct for each category. Each category struct will contain a description field that contains the name of the category.   226         /// TODO:得到博客分类 227         [XmlRpcMethod("metaWeblog.getCategories")] 228         public Category[] getCategories( 229         string blogid, 230         string username, 231         string password) 232         { 233  234             return (Category[])this.Invoke("getCategories", new object[] { blogid, username, password }); 235         } 236     } 237     #endregion 238 } 239 
复制代码

三、图示【调用API发送第一篇简单博客】

 MetaWeblog API调用_第1张图片

 

——————————————————————————————————————————

资源链接:

http://www.xmlrpc.com/spec   英文的xml-rpc规范
RFC: MetaWeblog API   MetaWeblog API 规范
http://www.duduwolf.com/post/41.asp  中文翻译的xml-rpc规范(感谢翻译者:滴水)
http://www.XML-RPC.Net XML-RPC的.NET 实现,其中有最新.net2.0的XML-RPC实现的下载
MetaWeblogAPI and MSN Spaces  MSDN上关于MetaWeblog API及MSN Spaces接口的说明及.NET示例

转载于:https://www.cnblogs.com/webenh/p/5790400.html

你可能感兴趣的:(MetaWeblog API调用)