导航

聚合

«2007年6月»
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

Blog统计

新闻/公告

存档

随笔分类

文章分类

相册

2007年6月14日

Google 博客搜索 Ping 服务应用

Google Ping 介绍

通 过 Google“博客搜索”Ping API, 用户可以程序化的方式将博客内容的更新通知给 Google“博客搜索”引擎。这对于经常更新博客内容的用户尤其有用。博客服务提供商的管理人员也可以利用此API将其平台上的博客内容变化向 Google 通告,以便 Google“博客搜索”及时抓取来自这一服务提供商的最新内容。为设置对 Google“博客搜索”的自动 Ping 机制,请按照如下所述设置XML-RPC客户端或REST客户端以发送请求。您可以任选一种方法进行通知;两者都将按照相同的方式进行处理。


 设置XML-RPC客户

XML-RPC客户的请求应包含如下元素:

RPC端点: http://blogsearch.google.com/ping/RPC2
调用方法名: weblogUpdates.extendedPing
参数: (应按照如下所列的相同顺序传送)

  • 站点名
  • 站点URL
  • 需要检查更新的页面URL
  • 相应的RSS、RDF或Atom种子的URL
  • 可选 页面内容的分类名称(或标签)。您可以指定多个值,之间用'|'字符进行分隔。

XML-RPC响应中将返回含有两个元素的<struct> :

  • flerror (Boolean):当有错误发生时设为true/1
  • message (string) :"Thanks for the ping." (如果成功) 或者一个错误信息(如果不成功)。

XML-RPC请求的例子


POST /RPC2 HTTP/1.0
User-Agent: request
Host: blogsearch.google.com
Content-Type: text/xml
Content-length: 447

<?xml version="1.0"?>
<methodCall>
<methodName>weblogUpdates.extendedPing</methodName>
<params>
<param>
<value>Official Google Blog</value>
</param>
<param>
<value>http://googleblog.blogspot.com/</value>
</param>
<param>
<value>http://googleblog.blogspot.com/</value>
</param>
<param>
<value>http://googleblog.blogspot.com/atom.xml</value>
</param>
</params>
</methodCall>

XML-RPC响应的例子


HTTP/1.1 200 OK
Connection: close
Content-Length: 451
Content-Type: text/xml
Date: Sun, 30 Sep 2001 20:02:30 GMT
Server: Apache

<?xml version="1.0"?>
<methodResponse>
<params>
<param>
<value>
<struct>
<member>
<name>flerror</name>
<value>
<boolean>0</boolean>
</value>
</member>
<member>
<name>message</name>
<value>Thanks for the ping.</value>
</member>
</struct>
</value>
</param>
</params>
</methodResponse>

  设置REST客户

REST客户的请求中包含如下元素:

URL: http://blogsearch.google.com/ping

参数:

  • name = 博客的名字
  • url = 博客的URL
  • changesURL = RSS、RDF或Atom种子的URL (可选)
响应中将返回文本内容,在成功的时候是"Thanks for the ping.",在失败时是一条错误消息。

例子:



  changes.xml的格式

Google 将所接受的“博客搜索” Ping 记录以XML格式发布到http://blogsearch.google.com/changes.xml。changes.xml文件格式包含一个根元素<weblogUpdates>和一个或多个的<weblog>元素。

<weblogUpdates version="2" updated="Wed, 30 May 2006 14:10:00 GMT" count="1384779">
<weblog name="Some Blog"
url="http://googleblog.blogspot.com"
rssUrl="http://googleblog.blogspot.com/atom.xml"
when="1"/>
...
</weblogUpdates>

<weblogUpdates>元素

  • version:用来指示一个主要的格式变化,目前的版本是2。
  • updated:以 HTTP 1.0格式表示的日期时间。它指示了该文件上一次更新的时间。
  • count:一个递增的数字,表示了changes.xml文件的版本。新版本changes.xml文件通常具有更大的count值。

<weblog>元素

  • name:Blog的名称。
  • url: Blog的url。
  • rssUrl: 相应的RSS、Atom或其它种子的URL。
  • when: <weblogUpdates>元素的updated属性对应的时间减去相应的 Ping 发生的时间的差值,单位为秒。
====================================================================

下面实现如何使用XML RPC编程实现Google Ping服务.

首先,下载CookComputing.XmlRpc

我使用的是2.0版本.最新版为2.1.0

1.建立xml rpc客户端

 public class GoogleXmlRpc
    {
        /// <summary>
        /// 返回值,用于处理Google Ping返回值的结构
        /// </summary>
        public struct ReturnValue
        {
            public bool flerror;
            public string message;
        }

        [XmlRpcUrl("http://blogsearch.google.com/ping/RPC2")]
        public interface IGooglePing : IXmlRpcProxy
        {
            [XmlRpcMethod("weblogUpdates.extendedPing")]
            ReturnValue Ping(string websiteName, string websiteUrl, string changedUrl, string feedUrl);
        }
       
    }


2.向Google发出一个ping通告

在你的程序添加文章或更新文章时,发出ping通告.

        string websiteName="venjiang 的博客";                                                 // 博客名称
        string websiteUrl="http://blog.hidotnet.com/venjiang/";      // 博客网站地址
        string changeUrl = "http://blog.hidotnet.com/venjiang/";                      // 要更新的地址
        string feedUrl = "http://blog.hidotnet.com/venjiang/Rss.aspx";          // 聚合地址rss或atom

        GoogleXmlRpc.IGooglePing proxy = (GoogleXmlRpc.IGooglePing)XmlRpcProxyGen.Create(typeof(GoogleXmlRpc.IGooglePing));   // 创建代理类

       // 最新版本,支持泛型,可以直接使用:

       // GoogleXmlRpc.IGooglePing proxy =XmlRpcProxyGen.Create<GoogleXmlRpc.IGooglePing>();

        GoogleXmlRpc.ReturnValue returnValue = proxy.Ping(websiteName, websiteUrl, changeUrl, feedUrl);   // ping

        if (returnValue.flerror)
            Response.Write( "Google Ping 出错!");
        else
            Response.Write "Google Ping 成功!";


3.查看google 更新列表

下载:http://blogsearch.google.com/changes.xml 你可以看到你的博客相关信息已加入更新列表,目前google更新列表,有一定延迟.

发表于 @ 2007年6月14日 17:02 | 评论 (371)