文档章节

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

zchuanzhao
 zchuanzhao
发布于 2016/07/14 13:24
字数 708
阅读 698
收藏 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
粉丝 49
博文 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
spring websocket 和socketjs实现单聊群聊,广播的消息推送详解

spring websocket 和socketjs实现单聊群聊,广播的消息推送详解 WebSocket简单介绍 随着互联网的发展,传统的HTTP协议已经很难满足Web应用日益复杂的需求了。近年来,随着HTML5的诞生,WebSo...

浅色夏墨
08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux使用ntfs-3g操作ntfs格式硬盘

Linux内核目前只支持对微软NTFS文件系统的读取。 NTFS-3G 是微软 NTFS 文件系统的一个开源实现,同时支持读和写。NTFS-3G 开发者使用 FUSE 文件系统来辅助开发,同时对可移植性有益。 安装 ...

linuxprobe16
今天
1
0
kubeadm部署kubernetes集群

一、环境要求 这里使用RHEL7.5 master、etcd:192.168.10.101,主机名:master node1:192.168.10.103,主机名:node1 node2:192.168.10.104,主机名:node2 所有机子能基于主机名通信,编辑...

人在艹木中
今天
10
0
Shell特殊符号总结以及cut,sort,wc,uniq,tee,tr,split命令

特殊符号总结一 * 任意个任意字符 ? 任意一个字符 # 注释字符 \ 脱义字符 | 管道符 # #号后的备注被忽略[root@centos01 ~]# ls a.txt # 备注 a.txt[root@centos01 ~]# a=1[root@centos01...

野雪球
今天
3
0
OSChina 周二乱弹 —— 程序员圣衣

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @达尔文:分享Skeeter Davis的单曲《The End of the World》 《The End of the World》- Skeeter Davis 手机党少年们想听歌,请使劲儿戳(这里...

小小编辑
今天
20
0
[ python import module ] 导入模块

import moudle_name ----> import module_name.py ---> import module_name.py文件路径 -----> sys.path (这里进行查找文件) # from app.web import Personimport app.web.Person as Pe......

_______-
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部