一、查看微信开放文档
调用接口为:
https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend?access_token=ACCESS_TOKEN
需要参数
需要token,token也是调用微信接口,传入小程序appid和secret
二、实现步骤
- 使用restTemplate发送请求获取token
//微信获取token的url
private final String ACCESS_TOKEN_URL =
"https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
@Autowired
private RestTemplate restTemplate;
/**
* 获取TOKEN
* @return
*/
@Override
public String getAppAccessToken(String appid, String secret) {
ResponseEntity<JSONObject> responseEntity =
restTemplate.getForEntity(String.format(ACCESS_TOKEN_URL,appid,secret), JSONObject.class);
String accessToken = responseEntity.getBody().getString("access_token");
return accessToken;
}
2. 获取到token后调用获取小程序访问量的接口
//微信获取小程序访问数据的url
private final String GET_DAILY_VISIT_TREND =
"https://api.weixin.qq.com/datacube/getweanalysisappiddailyvisittrend?access_token=%s";
@Autowired
private RestTemplate restTemplate;
/**
* 获取用户访问小程序数据日趋势
* @param beginDate
* @param endDate
* @return
*/
@Override
public List<AppletVisitsGgzp> getDailyVisitTrend(String appAccessToken, String beginDate, String endDate) {
// 创建请求 URL
String url = String.format(GET_DAILY_VISIT_TREND, appAccessToken);
//设置请求头
HttpHeaders headers = new HttpHeaders();
headers.add("Content-Type","application/json;charset=UTF-8");
// 创建请求参数
JSONObject param = new JSONObject();
param.put("begin_date", beginDate);
param.put("end_date", endDate);
HttpEntity<JSONObject> entity = new HttpEntity<>(param, headers);
// 发送 POST 请求并获取返回结果
ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, entity, JSONObject.class);
JSONObject jsonObject = JSON.parseObject(responseEntity.getBody().toString());
JSONArray jsonArray = jsonObject.getJSONArray("list");
List<AppletVisitsGgzp> visitsGgzpList = jsonArray.toJavaList(AppletVisitsGgzp.class);
return visitsGgzpList;
}
说明:
地址中的%s是占位符,使用String.format()进行包装,就可以替换为实际的值,token是请求参数不是body中的参数
由官方文档可知传入的参数是json格式,就需要用HttpEntity包装参数
返回结果为json格式的集合,有多种方式接收,笔者使用的是先取到json中的数据,再转成集合