最近想自己做一个Blog程序玩一下,自己做的博客程序,当然要能够和各种博客的客户端要能够连接起来才行。
想要连接当然就是要按照标准来做,目前流行的API主要有:
MetablogAPI (博客园就是了):http://www.xmlrpc.com/metaWeblogApi
MovableTypeAPI
这些API大同小异,主要功能莫非,取得Blog信息,取得Category,取得Post,新增Post,修改Post。
实现
关于XML-RPC:http://www.xmlrpc.com/
实现的工具:XML-RPC.NET(http://www.xml-rpc.net)
方法步骤:
第一步:下载 Version 2.1.0 has been released:xml-rpc.net.2.1.0.zip
第二步:解压,注意interfaces文件夹(里面提供了IMetablogAPI ,IBloggerAPI 等接口)和 bin文件夹,(里面提供了CookComputing.XmlRpcV2.dll,V2表示.net 2.0)
第三步:引入CookComputing.XmlRpcV2.dll,实现服务
第3.1步:有哪些不同的方法可以实现一个XML - RPC服务器?
使用XML -RPC.NET有三种方式实施一个XML - RPC服务器:
1.在IIS中使用从XmlRpcService派生的类。
2.使用NET Remoting的一个XML - RPC的格式化。
3.在IIS中使用。NET Remoting的一个XML - RPC格式化。第3.2步:我如何在IIS中实现XML - RPC服务器?
类XmlRpcService实现一个HTTP处理程序,公开IHttpHandler和IRequiresSessionState接口。当XmlRpcService的派生类是通过web.config文件中配置的,将传入XML- RPC请求给ASP.NET正在运行的处理程序。
第四步:实现服务
XmlRpcService是来自添加的自定义应用程序的服务功能。派生类中包含一个或多个公共方法,代表所需的XML- RPC方法。例如,将实施的SumAndDifference像这样:
[csharp] view plaincopyprint?
- <span style="font-size:18px;"></span>
[csharp] view plaincopyprint?
- <span style="font-size:18px;">public class MetablogAPI : XmlRpcService, IMetaWeblog
- {
- #region IMetaWeblog Members
- public object editPost(string postid, string username, string password, CookComputing.MetaWeblog.Post post, bool publish)
- {
- cmsgames3.Blog_Post blog_Post = db.Blog_Posts.Single(p => p.postid == int.Parse(postid));
- Post2Blog_Post(username, password, ref blog_Post, post, publish);
- db.SubmitChanges();
- return true;
- }
- }</span>
如果此代码保存到一个名为MetablogAPI.cs服务,可以使用下面的命令行:
csc /r:system.web.dll /r:CookComputing.XmlRpcV2.dll /target:library MetablogAPI .cs
这将建立一个DLL程序集称为cmsgames3.dll。
第五步:配置服务
该服务已被放置在一个虚拟目录,在目录是XMLRPC的情况下,有一个子目录叫做bin。创建一个名为web.config的文件夹,当中的configuraton文件包含以下信息:
<configuration> <system.web> <httpHandlers> <add verb="*" path="MetablogAPI.aspx" type="cmsgames3.MetablogAPI,cmsgames3"/>
</httpHandlers> </system.web> </configuration>
当一个HTTP请求到达这个URL中的虚拟根目录,指定该服务应该的调用。
配置文件中最后的部分指定URL,如果是SumAndDiff.rem类,SumAndDifference的处理程序将被调用。请注意,程序集限定名的类是用来使ASP.NET知道从哪个程序集加载类的。
HTTP动词指定一个通配符。 XmlRpcService实现同时处理的XML - RPC方法,XML - RPC方法调用的POST和GET返回一个服务自动生成的文档。(前面两句的原话是The HTTP verb is specified by a wildcard. The implementation in XmlRpcService handles both POST for XML-RPC method calls and GET to return an automatically generated documentation on the Service. )XmlRpcService将拒绝任何其他要求与相应的HTTP响应的代码。
URL中使用的扩展名是.REM。这是因为ASP.NET的默认配置,处理一些扩展,包括权限,ASPX,和ASMX比较方便。可以使用其他的扩展,例如.XMLRPC将是一个明显的选择,但这需要通过IIS管理单元在不断变化的虚拟目录里配置。
一旦服务被配置为一个快速检查,可以通过在URL指向您的浏览器和验证的自动生成的帮助页面显示。
第六步:只要实现了所有的接口,大功告成。
这些方法是必须的:
MetablogAPI支持下面的方法:
- blogger.deletePost
- blogger.getTemplate(可选)
- blogger.getUserInfo
- blogger.getUsersBlogs
- metaWeblog.editPost
- metaWeblog.getCategories
- metaWeblog.getPost
- metaWeblog.getRecentPosts
- metaWeblog.newMediaObject(上传图片用的)
- metaWeblog.newPost
以上内容,翻译加转载,在此贴出出处:http://hi.baidu.com/natame/blog/item/cf6755775322431db151b947.html,不确保翻译准确,不确定代码是否有错,很抱歉,本人不懂,有问题的请找原作者,谢谢