当前位置: 首页 > news >正文

海康车辆控制请求流程说明 - sessionLogin形式

海康车辆控制请求流程说明 - sessionLogin形式

1. 通过/ISAPI/Security/sessionLogin/capabilities?username=<用户名>接口获取 登录挑战值以及sessionID

// 1. 获取sessionId String userName = "账号"; String passWord = "密码"; String getSessionIdUrl = "http://IP/ISAPI/Security/sessionLogin/capabilities?username="+userName; String getSessionBody = HttpRequest.get(getSessionIdUrl) .execute().body(); // XML解析为JSON JSONObject getSessionXMLToJson = JSONUtil.xmlToJson(getSessionBody); // 获取挑战值以及sessionID HKSessionRespEntity SessionRespEntityBean = JSONUtil.toBean(getSessionXMLToJson.get("SessionLoginCap").toString(), HKSessionRespEntity.class); String challenge = SessionRespEntityBean.getChallenge(); String sessionId = SessionRespEntityBean.getSessionID();

2. 通过/ISAPI/Security/sessionLogin获取webSession

1. 主要方法

// 2. 请求sessionLogin接口获取webSession String getWebSessionUrl = "http:IP/ISAPI/Security/sessionLogin?timeStamp="+System.currentTimeMillis(); String sha256 = getSHA256(userName, passWord, challenge); String postParam = "<SessionLogin><userName>"+userName+"</userName><password>"+sha256+"</password><sessionID>"+sessionId+"</sessionID></SessionLogin>"; // 获取webSession HttpResponse webSessionBody = HttpRequest.post(getWebSessionUrl) .body(postParam) .execute(); // XML转化为JSON JSONObject getWebSessionXMLToJson = JSONUtil.xmlToJson(webSessionBody.body()); // 获取通过验证后的sessionID即webSession String webSession = getWebSessionXMLToJson.getByPath("SessionUserCheck.sessionID").toString();

2. 获取sha256 – 根据海康utils中密码加密方法转化

/** * sha256 * @param userName 用户名 * @param password 密码 * @param challenge 挑战值 * @return * @throws NoSuchAlgorithmException */ public String getSHA256(String userName, String password, String challenge) throws NoSuchAlgorithmException { MessageDigest digest = MessageDigest.getInstance("SHA-256"); String salt = ""; int iterations = 100; String sha256Code = ""; boolean hasSalt = (salt != null && !salt.isEmpty()); if (hasSalt) { // 【新协议】第一步:SHA256(用户名 + salt + 密码) String step1Input = userName + salt + password; sha256Code = bytesToHex(digest.digest(step1Input.getBytes(StandardCharsets.UTF_8))); // 【新协议】第二步:SHA256(上一步结果 + challenge) String step2Input = sha256Code + challenge; sha256Code = bytesToHex(digest.digest(step2Input.getBytes(StandardCharsets.UTF_8))); // 【新协议】第三步:从 i=2 开始循环迭代 for (int i = 2; i < iterations; i++) { sha256Code = bytesToHex(digest.digest(sha256Code.getBytes(StandardCharsets.UTF_8))); } } else { // 无盐第一步:SHA256(密码) 的十六进制字符串 + challenge // 注意:JS 中是 SHA256(e) + t.challenge,即把哈希后的 Hex 字符串与 challenge 拼接 String step1Hash = bytesToHex(digest.digest(password.getBytes(StandardCharsets.UTF_8))); sha256Code = step1Hash + challenge; // 无盐第二步:从 i=1 开始循环迭代 for (int i = 1; i < iterations; i++) { sha256Code = bytesToHex(digest.digest(sha256Code.getBytes(StandardCharsets.UTF_8))); } } return sha256Code; } /** * 字节数组转小写十六进制字符串 */ private static String bytesToHex(byte[] bytes) { StringBuilder sb = new StringBuilder(); for (byte b : bytes) sb.append(String.format("%02x", b)); return sb.toString(); }

3. 业务查询

请求头中必须添加Cookie字段,值为webSession,后续对于请求401接口的处理方式也一样

.header("Cookie", "WebSession="+webSession)
http://www.rkmt.cn/news/1497926.html

相关文章:

  • DELL IDRAC CLI命令查RAID与硬盘信息
  • 计算机毕业设计之django基于Python的书店ERP系统的设计与实现
  • 软考论文批改服务怎么选?模板与精批的核心区别
  • 2026硬质合金厂家推荐深度测评:如何为精密模具匹配最佳方案? - 热点速览
  • C13/C19怎么选?服务器电源线电流与接口选型技巧
  • 政策东风已至,服装行业如何抓住智能化转型的‘黄金窗口‘?
  • 别再裸奔用 Claude Code 了!这 10 个神仙 Skills 才是企业级提效的终极形态
  • 【Python】保姆级新手教程------第 11 章 迭代器 vs 生成器
  • 2026年靠谱护墙板工厂挑选指南
  • 2026 工业水处理设备TOP5品牌梳理 覆盖多领域工程落地应用参考指南 - 深度智识库
  • 国家级!工信部+国资委联合出手:人形机器人万台级落地,具身智能进入“作业模式“
  • 双减背景下本土 K12 教培生存研究 —— 以周浦圣杰教育本地化教研为例
  • 马斯克都在看的重庆东站,这5个机位,拍完根本走不动路 - 资讯焦点
  • FP5207/FP7208 在单节电池升压 12V 30W 大功率升压芯片选型区别
  • 翡翠镶嵌靠谱定制服务商推荐选择评测 - 奔跑123
  • 2026四平防水补漏哪家靠谱?正规公司排名及避坑价格指南 - 苏易修缮
  • 2026怒江权威认证贵金属回收 TOP5+黄金回收白银回收铂金回收门店地址电话推荐
  • 京东淘宝618红包最新领取口令放出,京东plus会员1888元超级补贴及满减活动攻略!618怎么叠加国补? - 资讯焦点
  • 小区地下停车场地坪工程品牌选型核心参考指南 - 奔跑123
  • git 拉取项目(mac)
  • 2026年AI大模型接口调度服务全维度技术横评:主流聚合平台能力拆解与成本测算指南
  • 食品饮料洁净生产线|无析出PPH全套管路板材,守护食品流体输送安全 - 苏一塑业13914572689
  • 在线投票小程序制作 | 微信投票怎么弄?2026免费投票小程序推荐(附防刷对比) - 微信投票小程序
  • Antonio Gulli《智能体设计模式》深度解析:21个Agent架构模式,告别Prompt技巧,掌握系统设计精髓!
  • python实现职场反pua评估
  • 医药GMP车间地坪如何满足洁净度要求?水性聚氨酯无缝地坪方案——港珠澳大桥人工岛地坪施工商 - 热点速览
  • 2026年6月10日重庆黄金铂金K金钻石回收实测排行榜:五家正规门店实力对比 - 资讯速览
  • 16.3分别总结langchain 和langgraph 之间的区别
  • 加油卡闲置怎么处理?安全回收的完整指南 - 团团收购物卡回收
  • 天津回收黄金门店实力榜单,靠谱变现首选禹竞名奢汇 - 名奢变现站