From 5e8a7ce21e35b2c4d7faeede04e60b3537db2f3c Mon Sep 17 00:00:00 2001 From: 648540858 <18010473990@163.com> Date: 星期一, 13 九月 2021 16:08:40 +0800 Subject: [PATCH] 添加utf-8解析设备信息 --- src/main/java/com/genersoft/iot/vmp/gb28181/transmit/request/impl/MessageRequestProcessor.java | 33 +++++++++++++++++++++++++++------ 1 files changed, 27 insertions(+), 6 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 db5f05b..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")); @@ -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