java以post發送方式實現百度連接提交主動推送(實時)

怎麼實現百度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

相關文章
相關標籤/搜索