From d9cfe061b9b501511f5d769f751c8ff6bbcb1bf9 Mon Sep 17 00:00:00 2001
From: 648540858 <648540858@qq.com>
Date: 星期四, 17 八月 2023 15:20:25 +0800
Subject: [PATCH] 优化对讲释放流程

---
 src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java |   31 ++++++++++++++++++++++++++++---
 1 files changed, 28 insertions(+), 3 deletions(-)

diff --git a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
index 0a7eb2c..bc43a3a 100644
--- a/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
+++ b/src/main/java/com/genersoft/iot/vmp/gb28181/transmit/event/request/SIPRequestProcessorParent.java
@@ -81,6 +81,7 @@
 		return responseAck(sipRequest, statusCode, msg, null);
 	}
 
+
 	public SIPResponse responseAck(SIPRequest sipRequest, int statusCode, String msg, ResponseAckExtraParam responseAckExtraParam) throws SipException, InvalidArgumentException, ParseException {
 		if (sipRequest.getToHeader().getTag() == null) {
 			sipRequest.getToHeader().setTag(SipUtils.getNewTag());
@@ -123,6 +124,8 @@
 		return response;
 	}
 
+
+
 	/**
 	 * 鍥炲甯dp鐨�200
 	 */
@@ -140,7 +143,10 @@
 		responseAckExtraParam.content = sdp;
 		responseAckExtraParam.sipURI = sipURI;
 
-		return responseAck(request, Response.OK, null, responseAckExtraParam);
+		SIPResponse sipResponse = responseAck(request, Response.OK, null, responseAckExtraParam);
+
+
+		return sipResponse;
 	}
 
 	/**
@@ -173,7 +179,8 @@
 		reader.setEncoding(charset);
 		// 瀵规捣搴峰嚭鐜扮殑鏈浆涔夊瓧绗﹀仛澶勭悊銆�
 		String[] destStrArray = new String[]{"&lt;","&gt;","&amp;","&apos;","&quot;"};
-		char despChar = '&'; // 鎴栬鍙墿灞曞吋瀹瑰叾浠栧瓧绗�
+		// 鎴栬鍙墿灞曞吋瀹瑰叾浠栧瓧绗�
+		char despChar = '&';
 		byte destBye = (byte) despChar;
 		List<Byte> result = new ArrayList<>();
 		byte[] rawContent = request.getRawContent();
@@ -199,8 +206,26 @@
 		Byte[] bytes = new Byte[0];
 		byte[] bytesResult = ArrayUtils.toPrimitive(result.toArray(bytes));
 
-		Document xml = reader.read(new ByteArrayInputStream(bytesResult));
+		Document xml;
+		try {
+			xml = reader.read(new ByteArrayInputStream(bytesResult));
+		}catch (DocumentException e) {
+			logger.warn("[xml瑙f瀽寮傚父]锛� 鎰挎枃濡備笅锛� \r\n{}", new String(bytesResult));
+			logger.warn("[xml瑙f瀽寮傚父]锛� 鎰挎枃濡備笅锛� 灏濊瘯鍏煎鎬у鐞�");
+			String[] xmlLineArray = new String(bytesResult).split("\\r?\\n");
+
+			// 鍏煎娴峰悍鐨刟ddress瀛楁甯︽湁<鐮存崲xml缁撴瀯瀵艰嚧鏃犳硶瑙f瀽xml鐨勯棶棰�
+			StringBuilder stringBuilder = new StringBuilder();
+			for (String s : xmlLineArray) {
+				if (s.startsWith("<Address")) {
+					continue;
+				}
+				stringBuilder.append(s);
+			}
+			xml = reader.read(new ByteArrayInputStream(stringBuilder.toString().getBytes()));
+		}
 		return xml.getRootElement();
 	}
 
+
 }

--
Gitblit v1.8.0