package com.ycl.feign; import com.alibaba.fastjson2.JSON; import com.alibaba.fastjson2.JSONObject; import com.hikvision.artemis.sdk.ArtemisHttpUtil; import com.hikvision.artemis.sdk.config.ArtemisConfig; import com.ycl.platform.domain.param.HK.BaseParam; import com.ycl.platform.domain.param.HK.FaceDetectParam; import com.ycl.utils.DateUtils; import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Value; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.jar.JarEntry; /** * @author:xp * @date:2024/8/12 11:47 */ @Slf4j public class HkApiUtil { @Value("${HK.host}") public static String host; @Value("${HK.appKey}") public static String appKey; @Value("${HK.appSecret}") public static String appSecret; /** * 调用海康接口 * * @param apiUrl 接口地址:/api/dqd/service/rs/v2/data/faceDetect/query * @param params 请求参数 * @param resultType 响应结果接收类 * @return 调用结果 */ public static List sendAPI(String apiUrl, BaseParam params, Class resultType) { // STEP1:设置平台参数,根据实际情况,设置host appkey appsecret 三个参数. ArtemisConfig.host = host; // 平台的ip端口 ArtemisConfig.appKey = appKey; // 密钥appkey ArtemisConfig.appSecret = appSecret;// 密钥appSecret // STEP2:设置OpenAPI接口的上下文 final String ARTEMIS_PATH = "/artemis"; // STEP3:设置接口的URI地址 final String previewURLsApi = ARTEMIS_PATH + apiUrl; Map path = new HashMap(2) { { put("https://", previewURLsApi); } }; // STEP4:设置参数提交方式 String contentType = "application/json"; // STEP5:组装请求参数 String body = JSON.toJSONString(params); log.info("请求参数:{}",body); // STEP6:调用接口 String result = null;// post请求application/json类型参数 List dataList = new ArrayList<>(); for (int i = 0; i < 10; i++) { result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, contentType , null); JSONObject jsonObject = JSONObject.parseObject(result); if(jsonObject.getString("code") == null || !ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))){ log.error("请求失败{}",result); dataList = null; break; } List resultList = HkApiUtil.getDataList(JSONObject.parseObject(result), resultType); if(CollectionUtils.isEmpty(resultList) || resultList.size() List getDataList(JSONObject jsonObject, Class resultClass) { if (jsonObject != null && ApiConstants.HKSuccessCode.equals(jsonObject.getString("code"))) { JSONObject data = jsonObject.getJSONObject("data"); if (data == null) { return null; } List list = data.getList("list", resultClass); if (CollectionUtils.isEmpty(list)) { return null; } return list; } return null; } }