当前位置: 首页 > 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.jsqmd.com/news/986181/

相关文章:

  • 怎么在微信上制作投票?3分钟搞定|2026免费防刷投票小程序推荐 制作教程 - 微信投票小程序
  • DELL IDRAC CLI命令查RAID与硬盘信息
  • 100亿美元成AI独角兽入场价,Anthropic、OpenAI冲刺万亿IPO!
  • 2026年中频点焊机深度测评:如何为高端制造匹配最佳方案? - 速递信息
  • 2026年热压魔术贴:杰幻电子源头厂家解决高端制造痛点 - 热点速览
  • 苹果 WWDC 2026 发布 macOS 27 “金门” 系统,开发者测试版现已可下载!
  • 工业雷达物位计:高精度免维护的水位监测方案 - 仪表人老张
  • 软考论文批改服务怎么选?模板与精批的核心区别
  • 计算机毕业设计之django基于Python的书店ERP系统的设计与实现
  • 面试官最爱问的“设计推特”,真的是考你会不会写代码吗?
  • 2026黑河防水补漏哪家靠谱?正规公司排名及避坑价格指南 - 苏易修缮
  • macOS 27“金门”秋季推出:Siri 升级、界面优化,英特尔 Mac 停止支持!
  • 庭院大门选型方案:铝艺大门的五大设计模式与六大性能优势分析
  • 2026硬质合金厂家推荐深度测评:如何为精密模具匹配最佳方案? - 热点速览
  • 需求从一句话到可执行 Ticket,中间差一段表达整理
  • C13/C19怎么选?服务器电源线电流与接口选型技巧
  • 【手把手教你】部署小龙虾 AI,全程可视化操作简单易上手(包含安装包)
  • 郑州婚纱照哪家好?2026实力品牌与技术全攻略 - 品牌评测官
  • 手机号查QQ号:3分钟快速上手完整指南
  • 毛利提升15%:保暖材料打造中老年马甲爆款 - 资讯纵览
  • 计算机毕业设计之django基于Python的乡村振兴服务平台
  • 别再裸奔用 Claude Code 了!这 10 个神仙 Skills 才是企业级提效的终极形态
  • 2026 工业水处理设备TOP5品牌梳理 覆盖多领域工程落地应用参考指南 - 深度智识库
  • 政策东风已至,服装行业如何抓住智能化转型的‘黄金窗口‘?
  • 【Python】保姆级新手教程------第 11 章 迭代器 vs 生成器
  • 2026年靠谱护墙板工厂挑选指南
  • Linux 重命名命令(小白版,一看就会)
  • 国家级!工信部+国资委联合出手:人形机器人万台级落地,具身智能进入“作业模式“
  • 以太网型温湿度传感器通讯协议手册(含指令实例)
  • 破解多头批量焊接痛点:冈兴多头点焊机的4C柔性精准焊接解决方案 - 速递信息