1、请求方式
String timestamp = String.valueOf(System.currentTimeMillis());
Map<String,String> requestMap = new HashMap<>();
requestMap.put("appId", appId);
requestMap.put("timestamp",timestamp);
requestMap.put("currentDay",currentDay);
requestMap.put("userId", userId);
requestMap.put("sign", LiveSignUtil.getSign(requestMap, appSecret));
String url = HttpUtils.appendUrl(String.format(LIVE_VIEW_LOG_URL, live.getChannelId()), requestMap);
LivePolyvResult<LiveViewLogResponse> responseStr = restTemplate.exchange(url, HttpMethod.GET, null,
new ParameterizedTypeReference<LivePolyvResult<LiveViewLogResponse>>() {}).getBody();
2、返回体接收实体:
import lombok.Data;
import java.io.Serializable;
import java.util.List;
/**
* 直播数据结果返回实体
* @author wuKeFan
* @date 2022-11-21 16:43:28
*/
@Data
public class LivePolyvResult<T> implements Serializable {
private static final long serialVersionUID = 1L;
private String status;
private List<T> result;
}
import lombok.Data;
import java.io.Serializable;
/**
* @author wuKeFan
* @date 2022-11-21 16:28:49
*/
@Data
public class LiveViewLogResponse implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 表示此次播放动作的ID
*/
private String playId;
/**
* 直播账号ID
*/
private String userId;
/**
* 频道号
*/
private String channelId;
/**
* 播放时长,单位:秒
*/
private Integer playDuration;
/**
* 停留时长,单位:秒
*/
private Integer stayDuration;
/**
* 流量大小,单位:bytes
*/
private Long flowSize;
/**
* 直播的场次ID
*/
private String sessionId;
/**
* 使用POLYV观看页的观众ID
*/
private String param1;
/**
* 使用POLYV观看页的观众昵称
*/
private String param2;
/**
* 观看日志类型,默认为live
* vod:观看回放
* live:直播
*/
private String param3;
/**
* POLYV系统参数
*/
private String param4;
/**
* POLYV系统参数
*/
private String param5;
/**
* IP地址
*/
private String ipAddress;
/**
* 国家
*/
private String country;
/**
* 省份
*/
private String province;
/**
* 城市
*/
private String city;
/**
* ISP运营商
*/
private String isp;
/**
* 播放视频页面地址
*/
private String referer;
/**
* 用户设备
*/
private String userAgent;
/**
* 操作系统
*/
private String operatingSystem;
/**
* 浏览器
*/
private String browser;
/**
* 是否为移动端
*/
private String isMobile;
/**
* 查询日期,格式:yyyy-MM-dd
*/
private String currentDay;
/**
* 创建日期 ,13位毫秒级时间戳
*/
private Long createdTime;
/**
* 更新日期 ,13位毫秒级时间戳
*/
private Long lastModified;
/**
* 0 或者不传:普通直播
* 1:超低延迟直播 rts (已经没有在使用)
* 2:PRTC直播(无延迟)
*/
private Integer ptype;
/**
* 进入页面时间,13位毫秒级时间戳,非特殊说明,请使用createdTime替代
*/
private Long firstActiveTime;
/**
* 退出页面时间,13位毫秒级时间戳,非特殊说明,请使用createdTime+stayDuration替代
*/
private Long lastActiveTime;
}
3、请求API的返回结果格式(json)
{
"status":"success",
"result":[
{
"playId":"1668873480520X1744091",
"userId":"7cd100093d",
"channelId":3546740,
"playDuration":793,
"stayDuration":815,
"flowSize":0,
"sessionId":"gfjo0wh292",
"param1":"EE498029",
"param2":"蒲公英",
"param3":"vod",
"param4":"",
"param5":"",
"ipAddress":"171.36.213.91",
"country":"中国",
"province":"广西",
"city":"南宁",
"isp":"联通",
"referer":"https://live.polyv.cn/watch/3546740?userid=EE498029&ts=1668873478207&sign=8a13425a892e2b2d642ee875e6b5c4fd&nickname=6JKy5YWs6Iux&avatar=https://thirdwx.qlogo.cn/mmopen/vi_32/Q0j4TwGTfTLT2E88bqDTE4r7gVcow0uWwYsnaEpibPUR1K44WgjV3FjdFXuSPll6PibTsqqwSAgJHc4sj6",
"userAgent":"Mozilla/5.0 (Linux; Android 12; JLH-AN00 Build/HONORJLH-AN00; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/86.0.4240.99 XWEB/4343 MMWEBSDK/20220903 Mobile Safari/537.36 MMWEBID/8462 MicroMessenger/8.0.28.2240(0x28001C57) WeChat/arm64 Weixin NetType/WIFI Language/zh_CN ABI/arm64",
"operatingSystem":"Android 1.x",
"browser":"微信",
"isMobile":"Y",
"currentDay":"2022-11-19",
"createdTime":1668873556000,
"lastModified":1668886250000,
"ptype":0,
"firstActiveTime":1668873481000,
"lastActiveTime":1668874301000
}
]
}