1、需求描述:
今天需要对接海康,客户是数据全在海康平台上,所以需要通过海康平台上提供的接口,请求后取到数据存入我们自己系统的数据库中去。
2、解决方案:
1)、首先这种对接第三方系统的功能,一般都是先去对方官网寻找对接文档,通过对方的接口文档去接入自己的系统,这里海康的官方文档地址
open.hikvision.com/docs/docId?…
有需要的可以点进去看看,这里因为我已经对接过了,所以就直接开始下一步的流程。
2)、根据官方文档的话,首先我们需要部署海康威视综合安防管理平台 iSecure CenterV1.5.100或更高版本的产品,
然后根据文档中的开发前准备拿到合作方Key和合作方Secret,就差不多可以开始开发了,
这里第二步一般都是客户已经准备好了,会直接告诉你合作方Key和合作方Secret还有服务器地址。
3)、以上都准备好了,就正式开始开发了,先到Cloud开放平台网站(open.hikvision.com/download/)上…
再根据提供的demo开始对接自己的系统了
4)、先把配置类写好,把之前客户提供的参数写进去
/**
* @description
* @param
* @return
* @author huang
* @date 2022/12/24 15:10
*/
public class HaikangConfig {
public static String host = "客户提供的IP";// 服务器ip端口
public static String appKey = "appkey";// 秘钥appkey
public static String appSecret = "appSecret";// 秘钥appSecret
public static String artemisUrl = "/artemis";//能力开放平台的网站路径
//需要对接的接口请求地址
public static String personListMethod = "/api/resource/v2/person/personList";//获取人员列表V2
public static String personPictureMethod = "/api/resource/v1/person/picture";//提取人员图片
public static String personFaceMethod = "/api/resource/v1/person/face/get";//全量获取人脸照片
public static String rootOrgMethod = "/api/resource/v1/org/rootOrg";//获取根组织
public static String rootOrgListMethod = "/api/resource/v1/org/orgList";//获取根组织列表
public static String subOrgMethod = "/api/resource/v1/org/parentOrgIndexCode/subOrgList";//根据父组织编号获取下级组织列表
public static String cardListMethod = "/api/resource/v1/card/cardList";//获取卡片列表
}
5)、根据自己系统所需要对接的接口开始对接,这里我选择对接海康的人员信息接口为例,下面是接口文档和编码
controller层
/**
* Title 获取人员列表v2
* @param request
* @param response
* @param
*/
@RequestMapping(value="/personList",method=RequestMethod.POST)
public void personList(HttpServletRequest request,HttpServletResponse response){
try{
JSONObject resultJson = haikangService.personList();
responseOutWithJson(response, resultJson);
}catch (Exception e) {
// TODO: handle exception
logger.error("获取人员列表v2(/haikang/personList)出现异常:",e);
}
}
serviceImpl层
/**
* @param
* @return
* @description 全量同步海康人员列表信息
* @author huang
* @date 2022/12/7 10:50
*/
@SuppressWarnings("serial")
public JSONObject personList() {
JSONObject resultJson = new JSONObject();
ArtemisConfig.host = HaikangConfig.host; //平台(nginx)IP 和端口
ArtemisConfig.appKey = HaikangConfig.appKey; //合作方 key
ArtemisConfig.appSecret = HaikangConfig.appSecret;//合作方 Secret
final String personListApi = HaikangConfig.artemisUrl + HaikangConfig.personListMethod;
Map<String, String> path = new HashMap<String, String>(2) {
{
put("https://", personListApi);//根据现场环境部署确认是http还是https
}
};
JSONObject jsonBody = new JSONObject();
int pageNo = 1;
int pageSize = 200;//可以根据数量多少自己设置
int total = 0;
int page = 0;
do {
jsonBody.put("pageNo", pageNo);
jsonBody.put("pageSize", pageSize);
String body = jsonBody.toJSONString();
String result = null;
try {
result = ArtemisHttpUtil.doPostStringArtemis(path, body, null, null, "application/json", null);
resultJson = JSONObject.parseObject(result);
if (resultJson != null) {
JSONArray jsonArray = resultJson.getJSONObject("data").getJSONArray("list");
total = Integer.valueOf(resultJson.getJSONObject("data").getString("total"));
for (Object arr : jsonArray) {
JSONObject map = (JSONObject) arr;
String createTime = String.valueOf(map.get("createTime"));
String updateTime = String.valueOf(map.get("updateTime"));
DateFormat df = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSXXX");
DateFormat df2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
map.get("personId")//海康人员id
//对接自己系统的数据库,存入数据库
if (数据库中是否已有对应数据) {
//更新表数据
} else {
//新建表中数据
}
}
} else {
resultJson.put("result", false);
resultJson.put("msg", "请求海康接口异常");
return resultJson;
}
} catch (Exception e) {
e.printStackTrace();
logger.error("全量获取人员列表信息v2出错:", e);
}
pageNo++;
if (total % pageSize == 0) {
page = total / pageSize;
} else {
page = total / pageSize + 1;
}
} while (pageNo <= page);
resultJson.put("result", true);
resultJson.put("msg", "同步成功");
return resultJson;
}
选择do{
}while();循环执行对接方法
3、最后:
这类对接第三方系统,尤其是海康、支付宝、微信这些比较出名的平台,根本不用怕的,第一,正因为是大平台,他们肯定有一套自己完整开发流程,有的还会有技术客服在线可以问的,甚至还会有专人和你们公司对接的, 比如支付宝会有业务经理拉你们公司的人进群,当你们公司需要对接支付宝支付时,这些你都是可以问的,当你有不清楚的地方。第二,你也可以上网查,因为平台大,你需要对接,肯定有人已经对接过了,攻略应该也全, 这也是我比较推荐大家去选择的,我个人还是不喜欢总是去请教别人的,一般都是直接百度搜,不到万不得已时是不会去打扰别人的,当然如果一个问题搞了你几个小时了,还是需要虚心请教请教的, 以上就是对接海康的全部内容了,希望可以帮助到你....