您的位置:首页 > 编程语言 > Java开发

java以post发送方式实现百度链接提交主动推送(实时)

2017-09-14 11:23 676 查看
怎么实现百度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代码 
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  站长平台服务器内部错误

原文链接:http://my.oschina.net/zchuanzhao/blog/711673
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: