百度统计java例子

事先准备好百度统计的账号,然后开通数据导出服务,获得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");
	}
}



你可能感兴趣的:(JAVA,第三方接口)