package com.comwinwin.project.videooperation; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.comwinwin.project.constant.BaseConstant; import com.comwinwin.project.domain.Equipment; import com.comwinwin.project.domain.FaceSearchInfo; import com.google.gson.JsonArray; import com.hikvision.artemis.sdk.ArtemisHttpUtil; import com.hikvision.artemis.sdk.config.ArtemisConfig; import com.ruoyi.common.utils.DateUtils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import java.io.InputStream; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.*; public class ArtemisPost { /** * 请根据自己的appKey和appSecret更换static静态块中的三个参数. [1 host] * 如果你选择的是和现场环境对接,host要修改为现场环境的ip,https端口默认为443,http端口默认为80.例如10.33.25.22:443 或者10.33.25.22:80 * appKey和appSecret请按照或得到的appKey和appSecret更改. * TODO 调用前先要清楚接口传入的是什么,是传入json就用doPostStringArtemis方法,下载图片doPostStringImgArtemis方法 */ /** * http://10.33.47.50/artemis/api/scpms/v1/eventLogs/searches * 根据API文档可以看出来,这是一个POST请求的Rest接口,而且传入的参数值为一个json * ArtemisHttpUtil工具类提供了doPostStringArtemis这个函数,一共六个参数在文档里写明其中的意思,因为接口是https, * 所以第一个参数path是一个hashmap类型,请put一个key-value,query为传入的参数,body为传入的json数据 * 传入的contentType为application/json,accept不指定为null * header没有额外参数可不传,指定为null * */ /** * http://10.33.47.50/api/visitor/v1/record/pictures * 根据API文档可以看出来,这是一个POST请求的Rest接口,而且传入的参数值为一个json * ArtemisHttpUtil工具类提供了doPostStringImgArtemis这个函数,一共六个参数在文档里写明其中的意思,因为接口是https, * 所以第一个参数path是一个hashmap类型,请put一个key-value,query为传入的参数,body为传入的json数据 * 传入的contentType为application/json,accept不指定为null * header没有额外参数可不传,指定为null * */ static { ArtemisConfig.host = BaseConstant.HOST;// 代理API网关nginx服务器ip端口 ArtemisConfig.appKey = BaseConstant.APP_KEY;// 秘钥appkey ArtemisConfig.appSecret = BaseConstant.APP_SECRET;// 秘钥appSecret } public static String getCameras(){ final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_CAMERAS; Map<String, String> path = new HashMap<String, String>(2) { { put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https } }; JSONObject jsonBody = new JSONObject(); jsonBody.put("pageNo", 1); jsonBody.put("pageSize", 100); String body = jsonBody.toJSONString(); String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 return result; } public static String getPreviewURLs(Equipment equipment,String type){ final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.PREVIEW_URL_PATH; Map<String, String> path = new HashMap<String, String>(2) { { put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https } }; JSONObject jsonBody = new JSONObject(); jsonBody.put("cameraIndexCode", equipment.getCameraIndexCode()); jsonBody.put("protocol",type); jsonBody.put("streamType",1); jsonBody.put("transmode",1); String body = jsonBody.toJSONString(); System.out.println(body); String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 JSONObject jsonObject = JSON.parseObject(result); String url = (String) jsonObject.getJSONObject("data").get("url"); return url; } public static JSONArray getImg(String start, String end){ List<FaceSearchInfo> list = new ArrayList<>(); final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.FACE_CAPTURE_SEARCH; Map<String, String> path = new HashMap<String, String>(2) { { put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https } }; JSONObject jsonBody = new JSONObject(); jsonBody.put("startTime",start); jsonBody.put("endTime",end); //jsonBody.put("cameraIndexCodes",end); String body = jsonBody.toJSONString(); String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 JSONObject jsonObject = JSON.parseObject(result); JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list"); return jsonArray; } public static JSONArray getNum(String start, String end,String groupId){ final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_NUM; Map<String, String> path = new HashMap<String, String>(2) { { put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https } }; JSONObject jsonBody = new JSONObject(); jsonBody.put("ids",groupId); jsonBody.put("granularity","daily"); jsonBody.put("startTime",start); jsonBody.put("endTime",end); String body = jsonBody.toJSONString(); String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 JSONObject jsonObject = JSON.parseObject(result); JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list"); return jsonArray; } public static JSONArray getGroup(String node){ final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_GROUP; Map<String, String> path = new HashMap<String, String>(2) { { put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https } }; JSONObject jsonBody = new JSONObject(); jsonBody.put("regionId",node); jsonBody.put("groupType",1); jsonBody.put("pageNo",1); jsonBody.put("pageSize",50); //jsonBody.put("cameraIndexCodes",end); String body = jsonBody.toJSONString(); String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 JSONObject jsonObject = JSON.parseObject(result); JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list"); return jsonArray; } public static JSONArray getNode(){ final String getCamsApi = BaseConstant.ARTEMIS_PATH +BaseConstant.GET_NODES; Map<String, String> path = new HashMap<String, String>(2) { { put(BaseConstant.HTTPS, getCamsApi);//根据现场环境部署确认是http还是https } }; JSONObject jsonBody = new JSONObject(); JSONArray jsonElements = new JSONArray(); jsonElements.add("root000000"); jsonBody.put("parentIndexCodes",jsonElements); jsonBody.put("resourceType","region"); jsonBody.put("pageNo",1); jsonBody.put("pageSize",50); //jsonBody.put("cameraIndexCodes",end); String body = jsonBody.toJSONString(); String result =ArtemisHttpUtil.doPostStringArtemis(path,body,null,null,"application/json",null);// post请求application/json类型参数 JSONObject jsonObject = JSON.parseObject(result); JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list"); return jsonArray; } public static void callPostImgStringApi(){ final String VechicleDataApi = BaseConstant.ARTEMIS_PATH +"/api/visitor/v1/record/pictures"; Map<String,String> path = new HashMap<String,String>(2){ { put("http://",VechicleDataApi); } }; JSONObject jsonBody = new JSONObject(); jsonBody.put("svrIndexCode", "8907fd9d-d090-43d3-bb3a-3a4b10dd7219"); jsonBody.put("picUri", "/pic?0dd453i3c-e*046456451175m6ep=t=i2p*i=d1s*i3d0d*=*1b8i81f4747059503--bdf90a-855s5721z3b9i=1="); String body = jsonBody.toJSONString(); System.out.println("body: "+body); HttpResponse result =ArtemisHttpUtil.doPostStringImgArtemis(path,body,null,null,"application/json",null); try { HttpResponse resp = result; if (200==resp.getStatusLine().getStatusCode()) { HttpEntity entity = resp.getEntity(); InputStream in = entity.getContent(); Tools.savePicToDisk(in, "d:/", "test4.jpg"); System.out.println("下载成功"); }else{ System.out.println("下载出错"); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws ParseException { // SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00"); // SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); // Date s = sd.parse("2022-04-13 16:00:00"); // Date e = sd.parse("2022-04-13 18:00:00"); // String end = sdf.format(e); // String start = sdf.format(s); // JSONArray array = getImg(start,end); // System.out.println("捕获人脸列表: "+array); // System.out.println("捕获人脸列表: "+array.size()); // // String Result = getCameras(); // JSONObject jsonObject = JSON.parseObject(Result); // JSONArray jsonArray = jsonObject.getJSONObject("data").getJSONArray("list"); // System.out.println("获取摄像机: "+jsonArray); // Equipment equipment = new Equipment(); // equipment.setCameraIndexCode("1838cd7aa9c94ebebf8f061a8d3eb1ef"); // String StringResult = getPreviewURLs(equipment,BaseConstant.RTSP); // System.out.println("获取路径: "+StringResult); //98e5bde53ee84a5f9a178635c8d8fcd5 // JSONArray Result = getNode(); // System.out.println("list: "+Result); // JSONArray Result = getGroup("91f1e76a-1ce3-4d43-beaf-68eaf5ad526c"); // System.out.println("list: "+Result); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS+08:00"); SimpleDateFormat sd = new SimpleDateFormat("yyyy-MM-dd"); String s = sd.format(new Date()); Date e = sd.parse(s); String start = sdf.format(e); String end = sdf.format(new Date()); JSONArray array = getNum(start,end,"85e645d3-1dad-463b-a3bb-1cd35a076647"); System.out.println("array: "+array); } }
public final static String HTTPS = "https://"; public final static String HTTP = "http://"; public final static String HOST = "123.124.27.48:1443"; //public final static String HOST = "192.168.1.200:1443"; public final static String APP_KEY = "28799674"; public final static String APP_SECRET = "ulgOHu6bQu25JkcbjpsV"; public static final String ARTEMIS_PATH = "/artemis"; public static final String GET_CAMERAS = "/api/resource/v1/cameras"; public static final String GET_NODES = "/api/irds/v2/region/nodesByParams"; public static final String GET_GROUP = "/api/cfas/v2/countGroup/groups/page"; public static final String GET_NUM = "/api/cfas/v2/passengerFlow/groups"; public static final String PREVIEW_URL_PATH = "/api/video/v2/cameras/previewURLs"; public static final String FACE_CAPTURE_SEARCH = "/api/frs/v1/event/face_capture/search"; public static final String SAVE_PATH = "D:/app/java_2021_dispatchmonitor"; public static final String RTSP = "rtsp"; public static final String RTMP = "rtmp";
<dependency> <groupId>com.hikvision.ga</groupId> <artifactId>artemis-http-client</artifactId> <version>1.1.3</version> </dependency>