博客更新以后需要通知搜索引擎来进行抓取,使用Ping服务能够在几十分钟内就把新的博客内容发布到搜索引擎上。PING的API接口基本都是一样的,这里给出一段用PHP编写的PING Google“博客搜索”的例子代码。??????

function googleping_send ($blogname, $webaddress, $urladdress, $rssaddress, $categoryname) {
	$url="http://blogsearch.google.com/ping/RPC2";
	$trackback_url=parse_url($url);
	$out="POST {$trackback_url['path']}".($trackback_url['query'] ? '?'.$trackback_url['query'] : '')." HTTP/1.0\r\n";
	$out.="Host: {$trackback_url['host']}\r\n";
	$out.="Content-Type: text/xml; charset=utf-8\r\n";

	$query_string="<?xml version=\"1.0\"?>\r\n<methodCall>\r\n<methodName>weblogUpdates.extendedPing</methodName>\r\n<params>\r\n<param>\r\n<value>{$blogname}</value>\r\n</param>\r\n<param>\r\n<value>{$webaddress}</value>\r\n</param>\r\n<param>\r\n<value>{$urladdress}</value>\r\n</param>\r\n<param>\r\n<value>{$rssaddress}</value>\r\n</param>\r\n<param>\r\n<value>{$categoryname}</value>\r\n</param>\r\n</params>\r\n</methodCall>";

	$out.='Content-Length: '.strlen($query_string)."\r\n";
	$out.="User-Agent: Bo-Blog\r\n\r\n";
	$out.=$query_string;
	if ($trackback_url['port']=='') $trackback_url['port']=80;
	$fs=fsockopen($trackback_url['host'], $trackback_url['port'], $errno, $errstr, 10);
	if (!$fs) return false;
	fputs($fs, $out);
	$http_response = '';
	while(!feof($fs)) {
		$http_response .= fgets($fs, 128);
	}
	@fclose($fs);
	return true;
}

????

下面摘录Google“博客搜索”Ping API的说明。??????

设置对 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 发生的时间的差值,单位为秒。

自由转载,转载请注明: 转载自WEB开发笔记 www.chhua.com

本文链接地址: 博客对搜索引擎Ping服务接口访问例子代码 http://www.chhua.com/web-note529

相关笔记

更多