java实现百度统计_百度统计java例子

本文介绍了如何使用Java实现调用百度统计API,详细讲解了开通数据导出服务的步骤,并提供了获取站点列表和站点报告数据的代码示例。
摘要由CSDN通过智能技术生成

事先准备好百度统计的账号,然后开通数据导出服务,获得token值。

开通流程:

1. 登录您的百度统计帐号后,点击『管理』后,在左侧菜单栏中找到『其他设置-数据导出服务』。 2. 在数据导出服务中接受协议,开通服务即可。

3. 开通后,您的TOKEN值将显示在『数据导出服务』中,用于数据导出服务的安全验证,请妥善保存该TOKEN码。

代码示例:

package com.baidu.util;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.URL;

import java.net.URLConnection;

import com.alibaba.fastjson.JSON;

import com.alibaba.fastjson.JSONObject;

/**

* 百度统计数据获取工具类

*/

public class BaiduTJUtil {

private static final JSONObject HEADER = new JSONObject();

private static final String API_SITE;// 获取站点ID,获取当前用户下的站点和子目录列表以及对应参数信息,不包括权限站点和汇总网站。

private static final String API_DATA;// 根据站点ID获取站点报告数据。

private static final String API_URL;// 接口URL相同部分

static {

HEADER.put("username", "用户名");

HEADER.put("password", "密码");

HEADER.put("token", "开通百度统计token");//

HEADER.put("account_type", "1");

API_SITE = "getSiteList";

API_DATA = "getData";

API_URL = "https://api.baidu.com/json/tongji/v1/ReportService/";

}

/**

* 根据URL发送请求

* @param url

* @param content

* @return

*/

private static String sendRequest(String url, String content) {

System.out.println("sendRequest start");

URLConnection conn = null;

try {

conn = new URL(url).openConnection();

StringBuffer sb=null;

if(conn!=null){

System.out.println("connnect succeed");

conn.setUseCaches(false);

conn.setDoInput(true);

conn.setDoOutput(true);

conn.setRequestProperty("Content-Length", "" + content.length());

conn.setRequestProperty("Cache-Control", "no-cache");

conn.setRequestProperty("Content-Type", "application/json");

DataOutputStream stream = new DataOutputStream(conn.getOutputStream());

stream.write(content.getBytes("UTF-8"));

stream.close();

BufferedReader br = null;

try {

br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "utf-8"));

} catch (Exception e) {

e.printStackTrace();

}

sb = new StringBuffer();

String str = br.readLine();

while (str != null) {

sb.append(str);

str = br.readLine();

}

br.close();

}

System.out.println("sendRequest end");

return sb.toString();

} catch (Exception e1) {

e1.printStackTrace();

}

return "";

}

/**

* 获取用户的站点列表

* 文档地址://http://tongji.baidu.com/open/api/more?p=tongjiapi_getSiteList.tpl

* @return

*/

public static JSONObject getSite() {

System.out.println("getSite start");

JSONObject body = new JSONObject();

body.put("method", API_SITE);// 接口方法名称

JSONObject content = new JSONObject();

content.put("header", HEADER);

content.put("body", body);

String result=sendRequest(API_URL + API_SITE, content.toJSONString());

System.out.println("return data:"+JSON.parseObject(result));

System.out.println("getSite end");

return JSON.parseObject(result);

}

/**

* 根据站点 ID 获取站点报告数据

* @param siteId 站点ID

* @param method 要查询的报告 method名称

* @param startDate 开始时间

* @param endDate 结束时间

* @param metrics 指标

* @param gran 时间粒度

* 文档地址:http://tongji.baidu.com/open/api/more?p=tongjiapi_getData.tpl

* @return

*/

public static JSONObject getData(String siteId,String method,String startDate,String endDate,String metrics,String gran) {

System.out.println("getData start");

JSONObject body = new JSONObject();

body.put("site_id", siteId);//站点id

body.put("method", method);//通常对应要查询的报告

body.put("start_date", startDate);//查询起始时间,例:20160501

body.put("end_date", endDate);//查询结束时间,例:20160531

//body.put("start_date2", "");//对比查询起始时间

//body.put("end_date2", "");//对比查询结束时间

body.put("metrics",metrics);//自定义指标选择,多个指标用逗号分隔

body.put("gran", gran);//时间粒度(只支持有该参数的报告): day/hour/week/month

// body.put("order", "1");//指标排序,示例:visitor_count,desc

// body.put("start_index", "1");//获取数据偏移,用于分页;默认是0

body.put("max_results", "0");//单次获取数据条数,用于分页;默认是20; 0表示获取所有数据

JSONObject content = new JSONObject();

content.put("header", HEADER);

content.put("body", body);

String result=sendRequest(API_URL + API_DATA, content.toJSONString());

System.out.println("return data:"+JSON.parseObject(result));

System.out.println("getData end");

return JSON.parseObject(result);

}

public static void main(String[] args) {

//获取站点

//BaiduTJUtil.getSite();

//获取数据

BaiduTJUtil.getData("站点ID","overview/getTimeTrendRpt","20160501","20160531","pv_count","day");

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值