From 35e222482b26d5e672eb5939a24458fc30a7d37f Mon Sep 17 00:00:00 2001 From: chenparty <870300816@qq.com> Date: 星期日, 26 九月 2021 15:37:01 +0800 Subject: [PATCH] 修复快照无法生成的BUG --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 35 ++++++++++++++++++++++++++++------- 1 files changed, 28 insertions(+), 7 deletions(-) diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java index bd7bfd5..6f38e56 100644 --- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java +++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java @@ -172,6 +172,7 @@ String deviceId = deviceIdElement.getTextTrim().toString(); Device device = storager.queryVideoDevice(deviceId); if (device != null) { + rootElement = getRootElement(evt, device.getCharset()); if (!StringUtils.isEmpty(device.getName())) { mobilePosition.setDeviceName(device.getName()); } @@ -449,8 +450,11 @@ Element rootElement = getRootElement(evt); String requestName = rootElement.getName(); Element deviceIdElement = rootElement.element("DeviceID"); - String deviceId = deviceIdElement.getTextTrim().toString(); + String deviceId = deviceIdElement.getTextTrim(); Device device = storager.queryVideoDevice(deviceId); + if (device != null ) { + rootElement = getRootElement(evt, device.getCharset()); + } if (requestName.equals("Query")) { logger.info("鎺ユ敹鍒癉eviceInfo鏌ヨ娑堟伅"); FromHeader fromHeader = (FromHeader) evt.getRequest().getHeader(FromHeader.NAME); @@ -470,7 +474,9 @@ if (device == null) { return; } + device.setName(XmlUtil.getText(rootElement, "DeviceName")); + device.setManufacturer(XmlUtil.getText(rootElement, "Manufacturer")); device.setModel(XmlUtil.getText(rootElement, "Model")); device.setFirmware(XmlUtil.getText(rootElement, "Firmware")); @@ -550,7 +556,7 @@ deviceChannel.setStatus(gbStream.isStatus()?1:0); // deviceChannel.setParentId(parentPlatform.getDeviceGBId()); deviceChannel.setRegisterWay(1); - deviceChannel.setCivilCode(cmder.getSipConfig().getSipDomain()); + deviceChannel.setCivilCode(cmder.getSipConfig().getDomain()); deviceChannel.setModel("live"); deviceChannel.setOwner("wvp-pro"); // deviceChannel.setAddress("test"); @@ -569,12 +575,14 @@ } else { + Device device = storager.queryVideoDevice(deviceId); + if (device == null) { + return; + } + deviceListElement = getRootElement(evt, device.getCharset()).element("DeviceList"); Iterator<Element> deviceListIterator = deviceListElement.elementIterator(); if (deviceListIterator != null) { - Device device = storager.queryVideoDevice(deviceId); - if (device == null) { - return; - } + // 閬嶅巻DeviceList while (deviceListIterator.hasNext()) { Element itemDevice = deviceListIterator.next(); @@ -692,6 +700,9 @@ Device device = storager.queryVideoDevice(deviceId); if (device == null) { return; + } + if (device.getCharset() != null) { + rootElement = getRootElement(evt, device.getCharset()); } if (rootElement.getName().equals("Notify")) { // 澶勭悊鎶ヨ閫氱煡 @@ -816,6 +827,10 @@ Element rootElement = getRootElement(evt); Element deviceIdElement = rootElement.element("DeviceID"); String deviceId = deviceIdElement.getText().toString(); + Device device = storager.queryVideoDevice(deviceId); + if (device != null ) { + rootElement = getRootElement(evt, device.getCharset()); + } recordInfo.setDeviceId(deviceId); recordInfo.setName(XmlUtil.getText(rootElement, "Name")); if (XmlUtil.getText(rootElement, "SumNum")== null || XmlUtil.getText(rootElement, "SumNum") =="") { @@ -1009,9 +1024,15 @@ } private Element getRootElement(RequestEvent evt) throws DocumentException { + + return getRootElement(evt, "gb2312"); + } + + private Element getRootElement(RequestEvent evt, String charset) throws DocumentException { + if (charset == null) charset = "gb2312"; Request request = evt.getRequest(); SAXReader reader = new SAXReader(); - reader.setEncoding("gbk"); + reader.setEncoding(charset); Document xml = reader.read(new ByteArrayInputStream(request.getRawContent())); return xml.getRootElement(); } -- Gitblit v1.8.0