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】

二、要实现的数据结构

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

1 using System;
  2 using CookComputing.XmlRpc;
  3 
  4 namespace metaWeblogTest
  5 {
  6 
  7     #region 微软MSN网站 使用的 MetaWeblog API.
  8     /// 这个结构代表用户的博客基本信息
  9     /// </summary>
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     /// <summary> 
20     /// 这个结构代表用户信息
21     /// </summary> 
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     /// <summary> 
36     /// 这个结构代表博客分类信息
37     /// 这后面的getCategories()方法会取到CATEGORY数据。
38     /// </summary> 
39     [XmlRpcMissingMapping(MappingAction.Ignore)]
40     public struct Category
41     {
42         public string description;
43         public string title;
44     }
45 
46     /// <summary>  47     /// 这个结构代表博客( 文章 )信息。 48     /// 这后面的 editPost()方法, getRecentPosts()方法 和 getPost()方法 会取倒POST数据 .  49     /// </summary>  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     ///// <summary>  64     ///// 微软MSN网站 使用的 MetaWeblog API.  65     ////  网站:http://msdn.microsoft.com/en-us/library/aa905670.aspx 66     ///// </summary>  67     public class M_MetaWeblog : XmlRpcClientProtocol 68     { 69  70  71         /// <summary>  72         /// Returns the most recent draft and non-draft blog posts sorted in descending order by publish date.  73         /// </summary>  74         /// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param>  75         /// <param name="username"> The name of the user’s space. </param>  76         /// <param name="password"> The user’s secret word. </param>  77         /// <param name="numberOfPosts"> The number of posts to return. The maximum value is 20. </param>  78         /// <returns></returns>  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         /// <summary>  93         /// Posts a new entry to a blog.  94         /// </summary>  95         /// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param>  96         /// <param name="username"> The name of the user’s space. </param>  97         /// <param name="password"> The user’s secret word. </param>  98         /// <param name="post"> A struct representing the content to update. </param>  99         /// <param name="publish"> If false, this is a draft post. </param>  100         /// <returns> The postid of the newly-created post. </returns>  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         /// <summary>  115         /// Edits an existing entry on a blog.  116         /// </summary>  117         /// <param name="postid"> The ID of the post to update. </param>  118         /// <param name="username"> The name of the user’s space. </param>  119         /// <param name="password"> The user’s secret word. </param>  120         /// <param name="post"> A struct representing the content to update. </param>  121         /// <param name="publish"> If false, this is a draft post. </param>  122         /// <returns> Always returns true. </returns>  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         /// <summary>  137         /// Deletes a post from the blog.  138         /// </summary>  139         /// <param name="appKey"> This value is ignored. </param>  140         /// <param name="postid"> The ID of the post to update. </param>  141         /// <param name="username"> The name of the user’s space. </param>  142         /// <param name="password"> The user’s secret word. </param>  143         /// <param name="post"> A struct representing the content to update. </param>  144         /// <param name="publish"> This value is ignored. </param>  145         /// <returns> Always returns true. </returns>  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         /// <summary>  161         /// Returns information about the user’s space. An empty array is returned if the user does not have a space.  162         /// </summary>  163         /// <param name="appKey"> This value is ignored. </param>  164         /// <param name="postid"> The ID of the post to update. </param>  165         /// <param name="username"> The name of the user’s space. </param>  166         /// <param name="password"></param> 167         /// <returns>
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. </returns>  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         /// <summary>  180         /// Returns basic user info (name, e-mail, userid, and so on).  181         /// </summary>  182         /// <param name="appKey"> This value is ignored. </param>  183         /// <param name="postid"> The ID of the post to update. </param>  184         /// <param name="username"> The name of the user’s space. </param>  185         /// <param name="password"></param> 186         /// <returns> 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. </returns>  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         /// <summary>  202         /// Returns a specific entry from a blog.  203         /// </summary>  204         /// <param name="postid"> The ID of the post to update. </param>  205         /// <param name="username"> The name of the user’s space. </param>  206         /// <param name="password"> The user’s secret word. </param>  207         /// <returns> Always returns true. </returns>  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         /// <summary>  220         /// Returns the list of categories that have been used in the blog.  221         /// </summary>  222         /// <param name="blogid"> This should be the string MyBlog, which indicates that the post is being created in the user’s blog. </param>  223         /// <param name="username"> The name of the user’s space. </param>  224         /// <param name="password"> The user’s secret word. </param>  225         /// <returns>
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. </returns>  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发送第一篇简单博客】

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

资源链接:

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示例

时间: 2024-10-12 03:37:31

MetaWeblog API调用的相关文章

转 MetaWeblog API 编写

如今,许多人都熟悉个人和公司或业界主办的博客.后者明显成为了传统公司和行业网站的下一代新兴产物.博客的内容涉及从简洁的特制产品公告和公共关系到实用且深刻的主题探索,这些主题可能对公司的产品或行业的未来方向相关. 常用缩写词 API:应用程序编程接口 FTP:文件传输协议 HTTP:超文本传输协议 IT:信息技术 MIME:多媒体 Internet 邮件扩展(Multimedia Internet Mail Extensions) RFC:请求注解(Request for comments) RP

Facebook Oauth2.0 API调用方法

这些天搞了下Facebook API的东东,在官方网站下弄了一些接口,下面简单的把facebook的调用流程以及常用接口书序一下 :-)  当然在使用facebook api之前要有facebook账号以及在facebook上注册一个自己的应用  1.登录鉴权 https://graph.facebook.com/oauth/authorize?client_id=8888888888888&redirect_uri=http://www.mywebsite.com&scope=user_

PHP实现人人OAuth登录和API调用

人人开放平台给出的PHP SDK,个人感觉写的不怎么样,而且在我的电脑上运行不出来,总是113错误,查文档竟然还没有这个错误码,于是只好自己按照官方给出的文档,用PHP自己实现了一下.代码如下文,没有作封装,只是走了一下流程.如果是仅仅用于人人连接这样的登录验证和简单的API调用,也不是很有必要封装.作为使用人人API的一个PHP示范吧.自己写代码的过程中也参考了官网的SDK代码和DEMO代码. 说明: 1.使用了HttpClient类发起Get和Post请求,文件下载地址http://scri

翻译api调用

<?php function language($value,$from="auto",$to="auto") { $value_code=urlencode($value); #首先对要翻译的文字进行 urlencode 处理 $appid="YourApiKey"; #您注册的API Key $languageurl = "http://openapi.baidu.com/public/2.0/bmt/translate?cl

(转)Sphinx中文分词安装配置及API调用

这几天项目中需要重新做一个关于商品的全文搜索功能,于是想到了用Sphinx,因为需要中文分词,所以选择了Sphinx for chinese,当然你也可以选择coreseek,建议这两个中选择一个,暂时不要选择原版Sphinx(对中文的支持不是很好).又因为服务器所用 MySQL在当时编译时并没有编译Sphinx扩展,而重新编译MySQL并加入Sphinx暂时又无法实现(项目用到了多台服务器,在不影响现有业务的 情况下不可能去重新编译MySQL的),所以采用的是程序通过API来外部调用Sphin

Hbase java API 调用详解

Hbase java API 调用 一. hbase的安装 参考:http://blog.csdn.net/mapengbo521521/article/details/41777721 二.hbase访问方式 Native java api:最常规最高效的访问方式. Hbase shell:hbase的命令行工具,最简单的接口,适合管理员使用 Thrift gateway:利用thrift序列化结束支持各种语言,适合异构系统在线访问 Rest gateway:支持rest风格的http api

spark2.x由浅入深深到底系列六之RDD java api调用scala api的原理

RDD java api其实底层是调用了scala的api来实现的,所以我们有必要对java api是怎么样去调用scala api,我们先自己简单的实现一个scala版本和java版本的RDD和SparkContext 一.简单实现scala版本的RDD和SparkContext class RDD[T](value: Seq[T]) {   //RDD的map操作   def map[U](f: T => U): RDD[U] = {     new RDD(value.map(f))   

VC++中用API调用对话框资源

关键技术: 对于资源的载入须要几个API函数,以下分别介绍这几个API函数. a) FindResource 用来在一个指定的模块中定位所指的资源,语法例如以下: HRSRC FindResource(HMODULE hModule, LPCRSTR lpName, LPCTSTR lpType); 參数说明: (1)hModule: 包括所须要的资料的模块句柄.假设是程序本身,则能够设置为NULL; (2)lpName: 能够使资源名称或者资源ID. (3)lpType:资源类型.在这里也就是

阿里云api调用做简单的cmdb

阿里云api调用做简单的cmdb 1 步骤 事实上就是调用阿里api.获取可用区,比方cn-hangzhou啊等等.然后在每一个区调用api 取ecs的状态信息,最好写到一个excel里面去.方便排序排版. 2 示意图 3 源代码 https://github.com/gqdw/cmdb/tree/master