using System; using System.Collections.Generic; using System.Linq; using System.Xml; using Newtonsoft.Json; using Repository.Models; using Newtonsoft.Json.Linq; using System.IO; using System.Net; using System.Text; using System.Xml.Linq; using Repository.BackendRepository.Implement; using Repository.BackendRepository; using Ubiety.Dns.Core; namespace Backend.Services.Implement { public class webRequestService { public List obixQuery(string urlString, string bql) { List result = new List(); String username = "obixUser"; String password = "Admin123456"; String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(username + ":" + password)); String API_Url = urlString; HttpWebRequest Postrequest = (HttpWebRequest)WebRequest.Create(API_Url); Postrequest.Method = "POST"; Postrequest.Headers.Add("Authorization", "Basic " + encoded); Postrequest.PreAuthenticate = true; using (var streamWriter = new StreamWriter(Postrequest.GetRequestStream())) { string json = ""; streamWriter.Write(json); } HttpWebResponse response = (HttpWebResponse)Postrequest.GetResponse(); var responseString = new StreamReader(response.GetResponseStream()).ReadToEnd(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(responseString); //xmlDoc.Load("N4v1021.xml");//N4v1021 //xmlDoc.Save("N4.xml"); string jsonText = JsonConvert.SerializeXmlNode(xmlDoc); var data = Welcome.FromJson(jsonText); foreach (var item in data.Obj.Str) { Device_value row = new Device_value(); row.value = item.Val; string[] s1 = item.Val.Split(','); string[] s2 = s1[0].Split('/'); row.tag_name = ""; for (int i = 0; i < s2.Length; i++) { if (i == s2.Length - 2) { row.point_name = s2[i]; } else if (i == 1) { row.tag_name += s2[i]; } else if (i > 1 && i < s2.Length - 2) { row.tag_name += "_" + s2[i]; } } /*foreach (var ss in s2) { if (ss.Contains('_')) { string[] s3 = ss.Split('_'); if (s3.Count() > 3) { row.tag_name = ss; row.point_name = s2[s2.Length - 2]; break; } } }*/ result.Add(row); } return result; } //public void getObix() //{ // //#region 取得obix 設定 // //var obixApiConfig = new ObixApiConfig(); // //var sqlObix = $@"SELECT system_value as Value, system_key as Name FROM variable WHERE deleted = 0 AND system_type = 'obixConfig'"; // //var variableObix = await backgroundServiceRepository.GetAllAsync(sqlObix); // //obixApiConfig.ApiBase = variableObix.Where(x => x.Name == "ApiBase").Select(x => x.Value).FirstOrDefault(); // //obixApiConfig.UserName = ed.AESDecrypt(variableObix.Where(x => x.Name == "UserName").Select(x => x.Value).FirstOrDefault()); // //obixApiConfig.Password = ed.AESDecrypt(variableObix.Where(x => x.Name == "Password").Select(x => x.Value).FirstOrDefault()); // //String encoded = System.Convert.ToBase64String(System.Text.Encoding.GetEncoding("ISO-8859-1").GetBytes(obixApiConfig.UserName + ":" + obixApiConfig.Password)); // //#endregion 取得obix 設定 // HttpWebRequest archiveMonthRequest = (HttpWebRequest)WebRequest.Create($"{obixApiConfig.ApiBase}obix/histories/FIC_Center/{deviceNumberPoint.FullDeviceNumberPoint}/~historyRollup/"); // //HttpWebRequest archiveMonthRequest = (HttpWebRequest)WebRequest.Create($"{obixApiConfig.ApiBase}obix/histories/FIC_Center/H_E1_B1F_MVCB_MVCBH_V1/~historyRollup/"); // archiveMonthRequest.Method = "POST"; // archiveMonthRequest.Headers.Add("Authorization", "Basic " + encoded); // archiveMonthRequest.PreAuthenticate = true; // byte[] byteArray = Encoding.UTF8.GetBytes(historyQueryFilter); // using (Stream reqStream = archiveMonthRequest.GetRequestStream()) // { // reqStream.Write(byteArray, 0, byteArray.Length); // } // HttpWebResponse archiveMonthResponse = (HttpWebResponse)archiveMonthRequest.GetResponse(); // var archiveMonthResponseContent = new StreamReader(archiveMonthResponse.GetResponseStream()).ReadToEnd(); // xmlDocument.LoadXml(archiveMonthResponseContent); // string archiveMonthJson = JsonConvert.SerializeXmlNode(xmlDocument); // JObject archiveMonthJsonResult = (JObject)JsonConvert.DeserializeObject(archiveMonthJson); // if (archiveMonthJsonResult.ContainsKey("err")) //抓取錯誤 // { // //logger.LogError("【ArchiveElectricMeterDayJob】【月歸檔】【取得資料失敗】"); // //logger.LogError("【ArchiveElectricMeterDayJob】【月歸檔】【取得資料失敗】[錯誤內容]:{0}", archiveMonthJsonResult); // Dictionary archiveMonthRawData = new Dictionary(); // archiveMonthRawData.Add("@device_number", deviceNumberPoint.DeviceNumber); // archiveMonthRawData.Add("@point", deviceNumberPoint.Point); // archiveMonthRawData.Add("@start_timestamp", startTimestamp.Replace("T", " ").Substring(0, 19)); // archiveMonthRawData.Add("@end_timestamp", endTimestamp.Replace("T", " ").Substring(0, 19)); // archiveMonthRawData.Add("@is_complete", 0); // archiveMonthRawData.Add("@repeat_times", 0); // archiveMonthRawData.Add("@fail_reason", archiveMonthJson); // archiveMonthRawData.Add("@count_rawdata", 0); // archiveMonthRawData.Add("@min_rawdata", 0); // archiveMonthRawData.Add("@max_rawdata", 0); // archiveMonthRawData.Add("@avg_rawdata", 0); // archiveMonthRawData.Add("@sum_rawdata", 0); // archiveMonthRawData.Add("@updated_at", DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); // archiveMonthRawDatas.Add(archiveMonthRawData); // } // if (archiveMonthJsonResult.ContainsKey("obj")) //表示可以讀取到內容 // { // var ArrangeRawDatas = ArrangeRawData(deviceNumberPoint, archiveMonthJsonResult); // if (ArrangeRawDatas != null && ArrangeRawDatas.Count() > 0) // { // archiveMonthRawDatas.AddRange(ArrangeRawDatas); // } // } //} } }