SEO的终结目标是让搜索引擎更快的收录最新发布的文章,传统的模式下都是周期性的等待蜘蛛来爬,抓取更新内容。现在搜索引擎提供了一些接口,可以主动提交最近更新的文章,告诉搜索引擎更新的内容,当然不保证马上会被收录。不过搜索引擎是老大,他说可以这么玩,我们也就跟着这样玩。下面看看我们如何实现百度的ping接口,主动推送更新的文章。
百度ping接口手动提交地址:访问http://ping.baidu.com/ping.html页面,在输入框中输入博客地址或者feed地址,点击“提交博客”按钮即可。
百度ping接口实现自动提交:如果您的博客程序支持自动ping功能,您只需把百度的Ping服务地址配置到你的Blog发布后台或者客户端程序中,就可以实现自动通知的功能。
百度ping服务的地址为:http://ping.baidu.com/ping/RPC2
先看看百度官方的接口描述
自动Ping的XML_RPC
发送给百度Ping服务的XML-RPC客户请求需要包含如下元素:
RPC端点: http://ping.baidu.com/ping/RPC2
调用方法名: weblogUpdates.extendedPing
参数: (应按照如下所列的相同顺序传送)
博客名称
博客首页地址
新发文章地址
博客rss地址
Ping请求包的例子
weblogUpdates.extendedPing xml-rpc请求举例:
<?xml version="1.0" encoding="UTF-8"?> <methodCall> <methodName>weblogUpdates.extendedPing</methodName> <params> <param> <value><string>程序猿80吧</string></value> </param> <param> <value><string>http://www.cxy808.com/</string></value> </param> <param> <value><string>http://www.cxy808.com/english/20140617/974.html</string></value> </param> <param> <value><string>http://www.cxy808.com/rss.php</string></value> </param> </params> </methodCall>
ping-service响应举例:
ping-service对非POST方法请求返回HTTP_METHOD_NOT_ALLOWED(405)错误代码
对超大错误包返回HTTP_REQUEST_ENTITY_TOO_LARGE(413)错误代码
对非“text/xml”请求包返回HTTP_UNSUPPORTED_MEDIA_TYPE(415)错误代码
其他情况返回HTTP_OK(200)代码
xml-rpc响应http包体为一个xml文档,含有一个int值,0表示推送成功,其他值表示推送失败,目前只有0和1。
推送成功时的服务器响应包为:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <int>0</int> </value> </param> </params> </methodResponse>
推送失败时的服务器响应包为:
<?xml version="1.0" encoding="UTF-8"?> <methodResponse> <params> <param> <value> <int>1</int> </value> </param> </params> </methodResponse>
Java客户端的简单实现,实例方法很简单,需要要用到的同学可以自行优化集成到已有的系统,直接上代码:
package com.cxy808.example.xmlrpc; import java.net.URL; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; /** * 本实例简单演示了如何使用java客户端推送最新博客文章到百度Ping接口 * 大家可以根据这个例子,在自己的系统里增强实现自动推送 * @author cxy808.com */ public class XMLRPCClient { public static void main(String[] args) { try { XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); //百度ping服务器地址 config.setServerURL(new URL("http://ping.baidu.com/ping/RPC2")); XmlRpcClient client = new XmlRpcClient(); client.setConfig(config); Object[] params = new Object[] { "程序猿80吧", //博客名称 "http://www.cxy808.com/",//博客首页地址 "http://www.cxy808.com/english/20140617/974.html",//最新发的文章地址 "http://www.cxy808.com/rss.php"};//博客rss地址 //调用方法名: weblogUpdates.extendedPing Object result = (Object) client.execute("weblogUpdates.extendedPing", params); if(result.toString().equals("0")){ System.out.println("推送成功:)"); }else{ System.out.println("推送失败:("); } } catch (Exception e) { e.printStackTrace(); } } }
例子用到的依赖包可以从百度网盘下载: http://pan.baidu.com/s/1gdf3XIV