From f0aa0f9ea4bc9a924a4078fea175c41bc124151d Mon Sep 17 00:00:00 2001 From: fuliqi <fuliqi@qq.com> Date: 星期四, 29 八月 2024 16:25:52 +0800 Subject: [PATCH] OSD定时任务 --- ycl-server/src/main/java/com/ycl/api/HK/HKApi.java | 129 ++++++++++++++++++++++++++++++------------ 1 files changed, 92 insertions(+), 37 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 1b4e116..1360fea 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 @@ -1,65 +1,120 @@ package com.ycl.api.HK; +import com.ycl.platform.domain.result.OSDResult; +import constant.ApiConstants; import lombok.extern.slf4j.Slf4j; import org.apache.http.HttpResponse; import org.apache.http.auth.AuthScope; -import org.apache.http.auth.Credentials; 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.HttpGet; -import org.apache.http.impl.client.DefaultHttpClient; +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.xml.sax.InputSource; +import org.xml.sax.SAXException; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import java.io.IOException; import java.io.StringReader; import java.net.URI; +import java.net.URISyntaxException; +import java.time.OffsetDateTime; +import java.util.Date; @Slf4j public class HKApi { - public static void getOsdByIP(String ip) { - DefaultHttpClient httpclient = new DefaultHttpClient(); + //TODO:楠岃瘉閿欒鐨勬儏鍐� + public static OSDResult getOsdByIP(String ip, String userName, String password) { + OSDResult osdResult = new OSDResult(); + CloseableHttpClient httpClient = HttpClients.createDefault(); String hostUrl = "http://" + ip; - // 鑾峰彇鐒﹁窛 - String url = hostUrl + "/ISAPI/System/Video/inputs/channels/1/overlays"; - URI serverURI = null; try { - serverURI = new URI(url); - HttpGet httpGet = new HttpGet(url); - String username = "admin"; - String password = "zg@2024dx"; - Credentials creds = new UsernamePasswordCredentials(username, - password); - httpclient.getCredentialsProvider(). - - setCredentials( - new AuthScope(serverURI.getHost(), serverURI. - - getPort()), (Credentials) creds); - - HttpResponse response = httpclient.execute(httpGet); - - String resultString = EntityUtils.toString(response.getEntity(), "utf-8"); - log.info(resultString); + //鑾峰彇OSD + HttpResponse OSDResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_PATH, userName, password); + String OSDString = EntityUtils.toString(OSDResponse.getEntity(), "utf-8"); //瑙f瀽xml - DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); - DocumentBuilder builder = factory.newDocumentBuilder(); - Document document = builder.parse(new InputSource(new StringReader(resultString))); - document.getDocumentElement().normalize(); - NodeList nodeList = document.getElementsByTagName("TextOverlay"); - for (int i = 0; i < nodeList.getLength(); i++) { - Node node = nodeList.item(i); - if (node.getNodeType() == Node.ELEMENT_NODE) { - Element element = (Element) node; - log.info("TEXT : " + element.getElementsByTagName("displayText").item(0).getTextContent()); - } - } + parseXMl(OSDString, "TextOverlay", "displayText", osdResult, null); + //鑾峰彇Time + HttpResponse TimeResponse = getHttpResponse(httpClient, hostUrl + ApiConstants.HK_OSD_TIME, userName, password); + Date date = new Date(); + String timeString = EntityUtils.toString(TimeResponse.getEntity(), "utf-8"); + //瑙f瀽xml + parseXMl(timeString, "Time", "localTime", osdResult, date); } catch (Exception e) { - e.printStackTrace(); + log.error(e.getMessage()); + 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); + } + } 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())); + } + } + } + + private static HttpResponse getHttpResponse(CloseableHttpClient httpClient, 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)); + + HttpGet httpGet = new HttpGet(url); + + // 璁剧疆璇锋眰閰嶇疆 + RequestConfig requestConfig = RequestConfig.custom() + .setConnectTimeout(2000) + .setSocketTimeout(2000) + .build(); + httpGet.setConfig(requestConfig); + + // 缁戝畾鍑瘉鎻愪緵鑰呭埌HttpClient + httpClient = HttpClientBuilder.create() + .setDefaultCredentialsProvider(credsProvider) + .build(); + try { + return httpClient.execute(httpGet); + } catch (Exception e){ + throw new RuntimeException("娴峰悍OSD鎵ц澶辫触"); } } } -- Gitblit v1.8.0