| 礼品资讯 | 公司新闻 | 礼品展会、行业资讯 | 网络文载、轻松一刻 | 网络营销技巧、案例 | 深圳礼品公司-华诚礼品 | Hcg Ltd. | 底部 
50个快速增加RSS订阅用户数的简单方法 中国水电申购今日“抽血”A股, 谁申购谁TM是SB!
未知 给自己的Blog程序添加对Windows Live Writer的支持
[ 日期:2010-06-05]

给自己的blog程序添加对windows live writer的支持
原文:http://www.cnblogs.com/dah/archive/2007/04/02/697312.html 

windows live writer以及xml-rpc的介绍 

(很早写的一篇文章, 扔过来备份一下) 

windows live writer是microsoft推出的脱离浏览器的blog编辑和发布的工具, 支持html和简单的图片编辑上传, 使用它, 可以极大的方便blog的编辑和发布. 现在windows live writer对国外较大的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文件的路径. 

大功告成!  因为使用了别人做好的xml-rpc解决方案, 所以要实现它还是挺简单的. 由于live writer尚处于beta阶段, 还是有些不完善的地方, .. 期待live writer的正式版吧.. 

 顶部顶部 
 版权所有 © 2004-2008: 祥子 [祥子博客-祥子日记-祥子BLOG-]
 版权所有 © 2004-2008: 华诚礼品博客-祥子BLOG-]