using HMI.Core.Util; using log4net; using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System.Net.Http; using System.Text; namespace Plugin.BurnIn.Util { public class HttpResult { public int code { get; set; } public string msg { get; set; } public string ipn { get; set; } } public class PNUtil { public static bool GetPN(string mesAddress, string stationName, string sn, out string pn, out string msg) { pn = null; msg = string.Empty; try { //OP170Burn-In老化 string json = $"{{\"csn\":\"{sn}\",\"station_name\":\"{stationName}\"}}"; HttpClient val = new HttpClient(); BurnInUI.Logger.Debug($"Get PN Send: [{json}]"); try { StringContent val2 = new StringContent(json, Encoding.UTF8, "application/json"); HttpResponseMessage result = val.PostAsync($"http://{mesAddress}/mes-module-system-2.1.1/lixun/api/getPn", (HttpContent)(object)val2).Result; result.EnsureSuccessStatusCode(); string resJson = result.Content.ReadAsStringAsync().Result; HttpResult httpResult = JsonUtil.Deserialize(resJson); BurnInUI.Logger.Debug($"Get PN Receive: [{resJson}]"); if (httpResult.code == 200) { pn = httpResult.ipn; return true; } msg = httpResult.msg; return false; } finally { ((IDisposable)val)?.Dispose(); } } catch (Exception ex) { BurnInUI.Logger.Debug($"Get PN Error.", ex); msg = $"请求PN异常!{ex.Message}"; return false; } } public static bool CheckIn(ILog log, string mesAddress, string stationName, string sn, out bool needCheckIn, out string msg) { JObject data = new JObject(); data.Add("cmd", "QUERY_RECORD"); data.Add("p", "UOP"); data.Add("sn", sn); data.Add("station_name", stationName); data.Add("op", "A0000001"); needCheckIn = false; msg = string.Empty; string sendData = string.Empty; string resData = null; try { sendData = data.ToString(Formatting.None); using (HttpClient val = new HttpClient()) { StringContent val2 = new StringContent(sendData, Encoding.UTF8, "application/json"); HttpResponseMessage result = val.PostAsync("http://" + mesAddress + "/mes-module-system-2.1.1/lixun/api/checkIn", (HttpContent)(object)val2).Result; result.EnsureSuccessStatusCode(); resData = result.Content.ReadAsStringAsync().Result; JObject httpResult = JObject.Parse(resData); log.Info("CheckIn Send: " + httpResult.Value("sendStr")); log.Info("CheckIn Receive: " + httpResult.Value("receiveStr")); log.Info("CheckIn Get: " + resData); msg = httpResult.Value("msg"); if (httpResult.Value("code") == 200) { needCheckIn = httpResult.Value("needCheckIn"); return true; } log.Error("CheckIn Error: " + msg); return false; } } catch (Exception ex) { msg = ex.Message + " in " + ex.StackTrace + ".SendStr: " + sendData + ",ResultStr: " + resData; log.Error("CheckIn Unknow Error: " + msg); return false; } } } }