package com.zhgd.xmgl.util; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.hikvision.artemis.sdk.Client; import com.hikvision.artemis.sdk.Request; import com.hikvision.artemis.sdk.Response; import com.hikvision.artemis.sdk.constant.Constants; import com.hikvision.artemis.sdk.enums.Method; import com.zhgd.jeecg.common.execption.OpenAlertException; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import java.util.HashMap; import java.util.Map; import java.util.Objects; /** * 海康接口 */ @Slf4j @Component public class HikvisionUtil { public static String doPost(String host, String path, String body, Map querys, String appKey, String appSecret) throws Exception { log.info("调用海康接口.url:{}", host + path); log.info("调用海康接口.body:{}", body); Map headers = new HashMap(); headers.put("Accept", "*/*"); headers.put("Content-Type", "application/json"); Request request = new Request(Method.POST_STRING, host, path, appKey, appSecret, Constants.DEFAULT_TIMEOUT * 30); request.setHeaders(headers); request.setQuerys(querys); request.setStringBody(body); Response response = Client.execute(request); String responseStr = getResponseResult(response); log.info("调用海康接口.getResponseResult:{}", responseStr); return responseStr; } private static String getResponseResult(Response response) { String responseStr = null; int statusCode = response.getStatusCode(); if (!String.valueOf(statusCode).startsWith("2") && !String.valueOf(statusCode).startsWith("3")) { responseStr = response.getBody(); } else { responseStr = response.getBody(); } return responseStr; } /** * 成功后,获取data结果 * * @param rs * @return */ public static JSONObject getJSONObjectData(String rs) { JSONObject rsJo = JSONObject.parseObject(rs); String code = rsJo.getString("code"); if (Objects.equals(code, "0")) { return rsJo.getJSONObject("data"); } else { log.error("海康返回错误码:{}", rs); throw new OpenAlertException("海康返回错误码"); } } /** * 成功后,获取data结果 * * @param rsJo * @return */ public static JSONObject getJSONObjectData(JSONObject rsJo) { String code = rsJo.getString("code"); if (Objects.equals(code, "0")) { return rsJo.getJSONObject("data"); } else { log.error("海康返回错误码:{}", rsJo.toJSONString()); throw new OpenAlertException("海康调用失败"); } } public static JSONArray getJSONArrayData(String rs) { if (StrUtil.isBlank(rs)) { return null; } JSONObject rsJo = JSONArray.parseObject(rs); String code = rsJo.getString("code"); if (Objects.equals(code, "0")) { return rsJo.getJSONArray("data"); } else { log.error("海康返回错误码:{}", rs); return null; } } /** * 是否请求成功 * * @param rs * @return */ public static boolean isSuccess(String rs) { JSONObject rsJo = JSONObject.parseObject(rs); String code = rsJo.getString("code"); if (Objects.equals(code, "0")) { return true; } else { return false; } } /** * 是否请求成功 * * @param rsJo * @return */ public static boolean isSuccess(JSONObject rsJo) { String code = rsJo.getString("code"); if (Objects.equals(code, "0")) { return true; } else { return false; } } /** * 是否请求成功 * * @param rsJo * @return */ public static boolean isFail(JSONObject rsJo) { String code = rsJo.getString("code"); if (Objects.equals(code, "0")) { return false; } else { return true; } } public static void addPageParamIfAbsent(JSONObject param) { param.putIfAbsent("pageNo", 1); param.putIfAbsent("pageSize", 1000); } }