百度统计数据导出服务踩的坑

今天在项目中引入百度统计,我们是打算在我们的页面中引入百度提供的接口,而不仅仅是用百度统计里面的一些js,中途踩到一些坑,做下记录。

1.开通百度统计导出服务

这个导出服务算是高级功能吧,开通完之后百度统计会给你分配一个token,在后面会用到,开通的图如下:
这里写图片描述

2.通过代码调用百度统计的接口

为避免看此篇文章的同学不看完就动手操作导致翻车,先说结论,直接在postman中测即可,不用登录,不清楚的继续往下看。
在官网页面我首先看到最下面的示例代码和开发文档,把它们下载下来看,发现效果不好,一大坨一大坨的,直接用postman测https://api.baidu.com/json/tongji/v1/ReportService/getSiteList 这个接口,报如下错误:

1
2
3
4
5
6
7
8
9
10
11
12
13
{
"header": {
"desc": "system failure",
"failures": [
{
"code": 8603,
"message": "The request header you provided is invalid. sn:289933044807937",
"position": "_sys"
}
],
"status": 3
}
}

难道姿势不对,我又回过头来仔细的看百度文档,终于翻到下面这篇文档,我如获至宝,以为可以把问题解决,但就是这篇文档把我一步步带到坑中。

1
http://tongji.baidu.com/open/api/more?p=tongjiapi_guide.tpl

它在使用流程中写到,首先要进行身份认证,就是根据账号,密码和token进行身份验证,之后进行站点选择,这让我坚信,我上面操作失败是因为少了一步登录操作,我开始去百度上搜索这个问题,回答着寥寥,大部分都是提问,其中有一两个回答把我引到了github上,网址如下:

1
2
https://github.com/nqdy666/BaiduTongjiClient
和https://github.com/justlive1/baiduTongJi

一个是gradle项目一个是maven项目,费了老牛鼻子劲把这两个项目捡下来,下载依赖包,跑起来发现依旧不能运行,这就走了好大的弯路,现在又会过头在继续搜在postman中遇到的那个说请求头不可用的问题,发现下面一篇文档:

1
https://www.cnblogs.com/w1570631036/p/7096966.html?utm_source=debugrun&utm_medium=referral

然后我把请求体进行了修改,直接就请求成功了,详见如下截图,
这里写图片描述

请求体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"header": {
"account_type": 1,
"password": "你的密码",
"token": "你的token",
"username": "你的用户名"
},
"body": {
"siteId":"你的siteId",
"method": "visit/district/a",
"start_date": "20170818",
"end_date": "20171118",
"metrics": "pv_count,visitor_count,avg_visit_time"
}
}

如果postman能请求成功,那么我们使用java编写httpclient发送请求肯定也是可以的,我想纠正的就是百度统计的getSiteList和getData这两个接口只要你有用户名,密码,token(siteId在首页点击网站名称进去在浏览器地址栏中问号后面就可以获取到)组织好请求体就可以调用,完全不是某些网友回答的要费很大劲登录后才能调用,使用httpclient怎么调用就不说了,实在不会引入一个hutool工具包,里面有现成的工具类,最后希望大家少走弯路!!
这里写图片描述

刘俊重 wechat
欢迎关注我的微信公众号
坚持原创技术分享