怎么实现百度sitemap实时推送,首先,得拥有自己的网站,然后在百度站长上验证通过之后,才有资格推送百度sitemap。
如何选择链接提交方式,当然是选择最快的推送方式,主动推送,最为快速的提交方式,建议您将站点当天新产出链接立即通过此方式推送给百度,以保证新链接可以及时被百度收录。
本人开发的网站用的是ssh框架,底层是java语言,所以我们选择post推送,然后我们看一下baidu给我们
提供的推送接口如下:
post推送示例
POST /urls?site=www.919zzz.com&token=JNnS1lGKT9N2ertK HTTP/1.1
User-Agent: curl/7.12.1
Host: data.zz.baidu.com
Content-Type: text/plain
Content-Length: 83
http://www.example.com/1.html
http://www.example.com/2.html
好的,废话少说,进入我们主题,实现post推送代码如下package test;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.URL;
import java.net.URLConnection;
import com.stock.web.symbol.tools.JsonUrl;
public class TestTemp {
/**
* @param args
*/
public static void main(String[] args) {
String url = "http://data.zz.baidu.com/urls?site=www.919zzz.com&token=JNnS1lGKT9N2ertK";//网站的服务器连接
String[] param = {
"http://www.919zzz.com/detail/487aba6fe48d4a86b2f74d671293a65c.html"
"http://www.919zzz.com/detail/de426adc1ee14d638bfab7faad923cec.html"
"http://www.919zzz.com/detail/aed9a47637804da4bd34208291d699cc.html"
"http://www.919zzz.com/detail/d996825aa0404aa5b70369d1695f4b51.html"//需要推送的网址
};
String json = Post(url, param);//执行推送方法
System.out.println("结果是"+json); //打印推送结果
}
/**
* 百度链接实时推送
* @param PostUrl
* @param Parameters
* @return
*/
public static String Post(String PostUrl,String[] Parameters){
if(null == PostUrl || null == Parameters || Parameters.length ==0){
return null;
}
String result="";
PrintWriter out=null;
BufferedReader in=null;
try {
//建立URL之间的连接
URLConnection conn=new URL(PostUrl).openConnection();
//设置通用的请求属性
conn.setRequestProperty("Host","data.zz.baidu.com");
conn.setRequestProperty("User-Agent", "curl/7.12.1");
conn.setRequestProperty("Content-Length", "83");
conn.setRequestProperty("Content-Type", "text/plain");
//发送POST请求必须设置如下两行
conn.setDoInput(true);
conn.setDoOutput(true);
//获取conn对应的输出流
out=new PrintWriter(conn.getOutputStream());
//发送请求参数
String param = "";
for(String s : Parameters){
param += s+"\n";
}
out.print(param.trim());
//进行输出流的缓冲
out.flush();
//通过BufferedReader输入流来读取Url的响应
in=new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while((line=in.readLine())!= null){
result += line;
}
} catch (Exception e) {
System.out.println("发送post请求出现异常!"+e);
e.printStackTrace();
} finally{
try{
if(out != null){
out.close();
}
if(in!= null){
in.close();
}
}catch(IOException ex){
ex.printStackTrace();
}
}
return result;
}
}
然后,执行结果如下:结果是{"remain":48,"success":1} 已经推送成功!意思是还剩48条可以推送,本次已经推送成功一条。
另外附上可能出现的异常情况的返回码信息,供调试用:
200 无使用方式错误,需要进一步观察返回的内容是否正确
400 必选参数未提供
405 不支持的请求方式,我们只支持POST方式提交数据
411 HTTP头中缺少Content-Length字段
413 推送的数据过大,超过了10MB的限制
422 HTTP头中Content-Length声明的长度和实际发送的数据长度不一致
500 站长平台服务器内部错误