桃荷菊梅

博客园 首页 新随笔 联系 订阅 管理

最近想自己做一个Blog程序玩一下,自己做的博客程序,当然要能够和各种博客的客户端要能够连接起来才行。

想要连接当然就是要按照标准来做,目前流行的API主要有:

MetablogAPI (博客园就是了):http://www.xmlrpc.com/metaWeblogApi

Blogger API

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?

  1. <span style="font-size:18px;"></span> 

[csharp] view plaincopyprint?

  1. <span style="font-size:18px;">public class MetablogAPI : XmlRpcService, IMetaWeblog 
  2.    { 
  3. #region IMetaWeblog Members
  4. public object editPost(string postid, string username, string password, CookComputing.MetaWeblog.Post post, bool publish)  
  5.         {  
  6.                 cmsgames3.Blog_Post blog_Post = db.Blog_Posts.Single(p => p.postid == int.Parse(postid));  
  7.                 Post2Blog_Post(username, password, ref blog_Post, post, publish);  
  8.                 db.SubmitChanges();  
  9. return true;  
  10.         } 
  11. }</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,不确保翻译准确,不确定代码是否有错,很抱歉,本人不懂,有问题的请找原作者,谢谢大笑

posted on 2013-04-05 14:01  桃荷菊梅  阅读(112)  评论(0编辑  收藏  举报