java后台使用HttpURLConnection實現百度主動推送


優點是快

不需要頁面執行,,發布文章之后立即推送,所以,不管有沒有人訪問,都可以自動實時推送

嘗試了一下httpclient,沒找到相關資料,post方式無法塞url進去

最后改為

import java.net.URL;
import java.net.URLConnection;

文章發布后,調用saveOrUpdate方法,入庫之后調用推送

private void activelyPush(Session session, ArticleModel articleModel) throws IOException {

        ActivelyPushDao apd = new ActivelyPushDao();
        List<ActivelyPush> activelyPushs = apd.getAll(session);//獲取所有要推送的搜索引擎
        String[] Parameters = {
            "你的網站/" + articleModel.getAuthor_column_py() + "/" + articleModel.getId() + ".html"
        };
        for (ActivelyPush ap : activelyPushs) {
            String result = "";
            PrintWriter out = null;
            BufferedReader in = null;
            try {
                //建立URL之間的連接
                URL url = new URL(ap.getUrl());
                URLConnection conn = url.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();
                }
            }
        }

    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM