怎麼實現百度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推送代碼以下:
Java代碼 html
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 站長平臺服務器內部錯誤java