From 4edf419e4beed7e17c99aecc7860691c2b9a7196 Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期五, 30 八月 2024 20:14:10 +0800 Subject: [PATCH] 宇视SDK代码,OSD过滤ip --- ycl-server/src/main/java/com/ycl/api/HK/HKApi.java | 112 ++++++++++++++++++++++++++++++------------------------- 1 files changed, 61 insertions(+), 51 deletions(-) diff --git a/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java b/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java index 80d6b64..44d2226 100644 --- a/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java +++ b/ycl-server/src/main/java/com/ycl/api/HK/HKApi.java @@ -8,16 +8,14 @@ import org.apache.http.auth.UsernamePasswordCredentials; import org.apache.http.client.CredentialsProvider; import org.apache.http.client.config.RequestConfig; +import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.HttpGet; import org.apache.http.impl.client.BasicCredentialsProvider; import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.HttpClientBuilder; import org.apache.http.impl.client.HttpClients; import org.apache.http.util.EntityUtils; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; +import org.w3c.dom.*; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -35,66 +33,77 @@ public class HKApi { public static OSDResult getOsdByIP(String ip, String userName, String password) { OSDResult osdResult = new OSDResult(); - CloseableHttpClient httpClient = HttpClients.createDefault(); String hostUrl = "http://" + ip; try { //鑾峰彇OSD - HttpResponse OSDResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_PATH, userName, password); - String OSDString = EntityUtils.toString(OSDResponse.getEntity(), "utf-8"); + String OSDString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_PATH, userName, password); + if (OSDString == null) return null; + //瑙f瀽xml - parseXMl(OSDString, "TextOverlay", "displayText", osdResult, null); + parseXMl(OSDString, "TextOverlay", "displayText", osdResult, null,ip); //鑾峰彇Time - HttpResponse TimeResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_TIME, userName, password); + String timeString = getHttpResponse(hostUrl + ApiConstants.HK_OSD_TIME, userName, password); + if (timeString == null) return null; + Date date = new Date(); - String timeString = EntityUtils.toString(TimeResponse.getEntity(), "utf-8"); //瑙f瀽xml - parseXMl(timeString, "Time", "localTime", osdResult, date); + parseXMl(timeString, "Time", "localTime", osdResult, date,ip); } catch (Exception e) { return null; } return osdResult; } - private static void parseXMl(String OSDString, String tagName1, String tagName2, OSDResult osdResult, Date date) throws ParserConfigurationException, SAXException, IOException { - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new StringReader(OSDString))); - document.getDocumentElement().normalize(); - NodeList nodeList = document.getElementsByTagName(tagName1); - for (int i = 0; i < nodeList.getLength(); i++) { - Node node = nodeList.item(i); - if (node.getNodeType() == Node.ELEMENT_NODE && "TextOverlay".equals(tagName1)) { - Element element = (Element) node; - String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); -// log.info("TEXT : " + textContent); - if (i == 0) { - osdResult.setOSD1(textContent); - } else if (i == 1) { - osdResult.setOSD2(textContent); - } else if (i == 2) { - osdResult.setOSD3(textContent); - } else if (i == 3) { - osdResult.setName(textContent); - } else if (i == 4) { - osdResult.setOSD4(textContent); + private static void parseXMl(String OSDString, String tagName1, String tagName2, OSDResult osdResult, Date date,String ip) throws ParserConfigurationException, SAXException, IOException { + + try { + DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); + DocumentBuilder builder = factory.newDocumentBuilder(); + Document document = builder.parse(new InputSource(new StringReader(OSDString))); + document.getDocumentElement().normalize(); + NodeList nodeList = document.getElementsByTagName(tagName1); + for (int i = 0; i < nodeList.getLength(); i++) { + Node node = nodeList.item(i); + if (node.getNodeType() == Node.ELEMENT_NODE && "TextOverlay".equals(tagName1)) { + Element element = (Element) node; + String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); + // log.info("TEXT : " + textContent); + if (i == 0) { + osdResult.setOSD1(textContent); + } else if (i == 1) { + osdResult.setOSD2(textContent); + } else if (i == 2) { + osdResult.setOSD3(textContent); + } else if (i == 3) { + osdResult.setName(textContent); + } else if (i == 4) { + osdResult.setOSD4(textContent); + } + } else if (node.getNodeType() == Node.ELEMENT_NODE && "Time".equals(tagName1)) { + Element element = (Element) node; + String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); + // log.info("TEXT : " + textContent); + osdResult.setCheckTime(date); + OffsetDateTime dateTime = OffsetDateTime.parse(textContent); + // 灏哋ffsetDateTime杞崲涓篋ate瀵硅薄 + osdResult.setOsdTime(Date.from(dateTime.toInstant())); } - } else if (node.getNodeType() == Node.ELEMENT_NODE && "Time".equals(tagName1)) { - Element element = (Element) node; - String textContent = element.getElementsByTagName(tagName2).item(0).getTextContent(); -// log.info("TEXT : " + textContent); - osdResult.setCheckTime(date); - OffsetDateTime dateTime = OffsetDateTime.parse(textContent); - // 灏哋ffsetDateTime杞崲涓篋ate瀵硅薄 - osdResult.setOsdTime(Date.from(dateTime.toInstant())); } + } catch (Exception e) { + log.error("ip:{}鍑虹幇寮傚父,{}",ip,e.getMessage()); + throw new RuntimeException(e.getMessage()); } } - private static HttpResponse getHttpResponse(CloseableHttpClient httpClient, String url, String userName, String password) throws URISyntaxException, IOException { + private static String getHttpResponse(String url, String userName, String password) throws URISyntaxException, IOException { CredentialsProvider credsProvider = new BasicCredentialsProvider(); credsProvider.setCredentials( new AuthScope(new URI(url).getHost(), new URI(url).getPort()), new UsernamePasswordCredentials(userName, password)); + // 缁戝畾鍑瘉鎻愪緵鑰呭埌HttpClient + CloseableHttpClient httpClient = HttpClientBuilder.create() + .setDefaultCredentialsProvider(credsProvider) + .build(); HttpGet httpGet = new HttpGet(url); @@ -104,15 +113,16 @@ .setSocketTimeout(1000) .build(); httpGet.setConfig(requestConfig); - - // 缁戝畾鍑瘉鎻愪緵鑰呭埌HttpClient - httpClient = HttpClientBuilder.create() - .setDefaultCredentialsProvider(credsProvider) - .build(); - try { - return httpClient.execute(httpGet); - } catch (Exception e){ - throw new RuntimeException("娴峰悍OSD鎵ц澶辫触"); + try (CloseableHttpResponse response = httpClient.execute(httpGet)) { + int statusCode = response.getStatusLine().getStatusCode(); + if (statusCode == 200) { + return EntityUtils.toString(response.getEntity(), "utf-8"); + } else { + return null; + } + } catch (Exception e) { + throw new RuntimeException("娴峰悍OSD鎵ц澶辫触", e); } + } } -- Gitblit v1.8.0