文档章节

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

zchuanzhao
 zchuanzhao
发布于 2016/07/14 13:24
字数 708
阅读 669
收藏 0

怎么实现百度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  站长平台服务器内部错误

© 著作权归作者所有

共有 人打赏支持
zchuanzhao
粉丝 46
博文 237
码字总数 144603
作品 1
福州
程序员
Web端服务器推送技术原理分析

1 背景 “服务器推送技术”(ServerPushing)是最近Web技术中最热门的一个流行术语。它是继“Ajax”之后又一个倍受追捧的Web技术。“服务器推送技术”最近的流行跟“Ajax ”有着密切的关系。...

wersdffg
2015/02/11
0
1
探秘阿里聚石塔技术架构实现(一)

1、 聚石塔准入架构 如果塔内的系统与商家IDC非淘系业务系统进行交互,无法满足上述应用架构准入规则的要求,但必须提交塔内系统与塔外系统数据交互的业务场景及字段说明,平台审核通过后,开...

新栋BOOK
2017/11/03
0
0
Android 服务器推送技术

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对比...

晨曦之光
2012/03/15
0
6
Android推送通知指南

在开发Android和iPhone应用程序时,我们往往需要从服务器不定的向手机客户 端即时推送各种通知消息,iPhone上已经有了比较简单的和完美的推送通知解决方案,可是Android平台上实现起来却相对...

LiSteven
2013/03/28
0
0
Java EE8的五大最新特性

本文由ImportNew -enigma 翻译自dzone。欢迎加入翻译小组。转载请见文末要求。 备受期待的 Java Enterprise Edition 8 发布了两个令人兴奋的全新 API (JSON-Binding 1.0 和 Java EE Securi...

ImportNew
07/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

c语言之内存分配笔记

先看一个数组: short array[5] = {1,2} // 这儿定义的一个int类型的数组,数组第1和第2个元素值是1和2.其余后面默认会给值为0; 或者 short array[] = {1,2};//这儿数组第1和第2个元素,数组...

DannyCoder
今天
2
0
Shell | linux安装包不用选择Y/N的方法

apt-get install -y packageOR echo "y" | sudo apt-get install package

云迹
今天
2
0
Hadoop的大数据生态圈

基于Hadoop的大数据的产品圈 大数据产品的一句话概括 Apache Hadoop: 是Apache开源组织的一个分布式计算开源框架,提供了一个分布式文件系统子项目(HDFS)和支持MapReduce分布式计算的软件架...

zimingforever
今天
5
0
八大包装类型的equals方法

先看其中一个源码 结论:八大包装类型的equals方法都是先判断类型是否相同,不相同则是false,相同则判断值是否相等 注意:包装类型不能直接用==来等值比较,否则编译报错,但是数值的基本类型...

xuklc
今天
2
0
NoSQL , Memcached介绍

什么是NoSQL 非关系型数据库就是NoSQL,关系型数据库代表MySQL 对于关系型数据库来说,是需要把数据存储到库、表、行、字段里,查询的时候根据条件一行一行地去匹配,当量非常大的时候就很耗...

TaoXu
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部