打印

[转贴] 给自己的Blog程序添加对Windows Live Writer的支持

给自己的Blog程序添加对Windows Live Writer的支持

Windows Live Writer是Microsoft推出的脱离浏览器的Blog编辑和发布的工具,支持Html和简单的图片编辑上传, 使用它, 可以极大的方便Blog的编辑和发布. 现在Windows LiveWriter对国外较大的Blog服务提供了支持, 如Live Spaces, Blogger等,如果你没用使用支持列表里的服务却想使用Windows Live Writer的话, 只要给你的BLog添加相应的Xml-Rpc支持就可以了.
Xml-Rpc是类似WebService的一种远程调用服务, 但支持它的平台要比WebService要多, Windows Live Writer以及其他很多离线Blog编辑发布工具都是使用Xml-Rpc来调用Blog程序的相应方法.
本文以ASP.NET为例,给Blog添加对Windows Live Writer的Xml-Rpc的支持,让我们可以在Live Writer里面实现编辑, 发布和修改Blog条目, 如果你的Blog是使用其他平台的话, 请参看
http://www.xmlrpc.com/directory/1568/implementatio... 来查找如何在你的平台实现Xml-Rpc. 虽然在各平台实现Xml-Rpc的方法不同, 但是添加对Windows Live Writer支持的接口的步骤还是差不多的.

准备工作
对于ASP.NET平台, 首先在http://www.xml-rpc.net/ 下载对Xml-Rpc支持的组件, 解压缩后把bin文件夹中的 CookComputing.XmlRpcV2.dll 复制到ASP.NET程序的bin文件夹, 并且把interface文件夹中的 MetaWeblogAPI.cs 复制到App_Code文件夹(当然ASP.NET程序的其他文件夹也可以)..

开始
首先修改MetaWeblogAPI.cs文件, 这是Windows Live Writer支持的接口之一, 但是必须对它加一个方法才能正常的支持Windows Live Writer

添加一个struct:


public
struct UserBlog
{
public
string url;
public
string blogid;
public
string blogName;
}


这是用来保存Blog信息的结构
然后再IMetaWeblog接口中添加一个方法:

   [XmlRpcMethod("blogger.getUsersBlogs")]
UserBlog[] getUsersBlogs(
string appKey, string username, string password);

XmlRpcMethod指定的是在Xml-Rpc中的方法名, 这个不能改的..Client无法识别和调用
接口文件准备好了, 现在要实现接口的方法了
在添加在ASP.NET程序根目录添加一个ashx文件, 假设是Rpc.ashx, 下面提供一个Rpc.ashx的例子:

<%@ WebHandler Language="C#" Class="RPCService"
%>
<!--注册-->
<%@ Assembly Name="CookComputing.XmlRpcV2"
%>
<!--注册实现XmlRpc用的CookComputing.XmlRpcV2.dll-->
using System;
using System.Collections;
using System.Web;
using CookComputing.XmlRpc; //引入XmlRpc
using CookComputing.MetaWeblog; //引入IMetaWeblog接口
using DataAccess; //引入你自己的Blog程序的数据访问namespace

[XmlRpcService(Description
=
"MetaWeblog XML-RPC Service")]
public
class RPCService : XmlRpcService,IMetaWeblog
{
#region IMetaWeblog 成员
//获得Blog站点信息

public UserBlog[] getUsersBlogs(string appKey, string username, string password)
{
if (Login(username, password))  //验证用户名密码, 你必须在这个类中自己实现这个方法
        {
UserBlog blog
=
new UserBlog();
blog.blogid
=
"";  //就一个Blog, 这个不用
            blog.blogName =
"LifeBeta"; //BlogName, 随便写吧
            blog.url =
"http://aspspider.org/lifebeta/"; //Blog的网址

return
new UserBlog[] { blog };
}
return
null;
}
//添加Blog

public
string newPost(string blogid, string username, string password, Post post, bool publish)
{
if (Login(username, password))
{
//使用自己的DataAccess实现

return DataAccess.AddBlog(post.title, post.description, 4, "", false, DateTime.Now.AddHours(12)).ToString();
}
return
null;
}
//编辑Blog

public
object editPost(string postid, string username, string password, Post post, bool publish)
{
if (Login(username, password))
{
//使用你自己的DataAccess来实现, 注意post.title是标题, post.description是Blog的内容
            DataAccess.EditBlog(Convert.ToInt32(postid), post.title, post.description, 4, "", false);
}
return
null;
}
//获取分类
public CategoryInfo[] getCategories(string blogid, string username, string password)
{
if (Login(username, password))
{
//
        }
return
null;
}
//获取文章
public Post getPost(string postid, string username, string password)
{
if (Login(username, password))
{
//
        }
return
new Post();
}


    //获取最近发表的文章

    public Post[] getRecentPosts(string blogid, string username, string password, int numberOfPosts)
{
if (Login(username, password))
{
//略            
        }
return
null;
}
//发布媒体对象
public UrlData newMediaObject(string blogid, string username, string password, FileData file)
{
if (Login(username, password))
return
new UrlData();
}
return
new UrlData();
}
//自定义方法



public
bool Login(string userName, string pass)
{
//略,用来验证用户
    }
#endregion
}


OK..差不多就这样了..在浏览器里输入这个ashx看看, 有以上实现的方法列表和数据类型, 挺像WebService的本地测试页面吧. 不过Xml-Rpc不能本地测试. 你现在就可以用Windows Live Writer来试试它了.

使用Windows Live Writer发布Blog
和添加其他Blog站点一样, 不过在选择Blog服务的时候要选择MetaWeblog(Custom), script的地址填ashx文件的路径.

大功告成!

原文地址:http://www.cnblogs.com/Dah/archive/2007/04/02/697312.html

TOP

我只用Space写博。

支持MSN Space
Windows Live 中文社区 影音娱乐 试用版主
MSN/EMAIL: slevin_yang@hotmail.com
MSN Space : http://slevinyang.spaces.live.com/
Windows Live中文社区欢迎您的加入! 分享与交流,让我们做的更好!

TOP

还有这种霸王硬上弓的办法??收藏一下备用

TOP

呵呵 我用的博客程序对wlw已经很友好的支持了

TOP

我的博客都是300年不更新的那种,不过顶一下,下回想用的时候这里来看

TOP

boblog  2.1.0不知道支持不 回去实验下

TOP

引用:
原帖由 pcexp 于 2008-6-6 09:26 发表
boblog  2.1.0不知道支持不 回去实验下
支持,不过很不完善

TOP