0
点赞
收藏
分享

微信扫一扫

对接海康硬件统计人流量

芥子书屋 2022-04-27 阅读 77
java
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>

举报

相关推荐

0 条评论