using System.Net.Cache; using System.Net; using System.Text; using Newtonsoft.Json; using System.Data.SqlClient; namespace Gs.Toolbox; public class InterfaceUtil { /// /// /// /// json参数 /// /// /// /// 如果为2,则是更新工单状态 /// 如果成功返回日志guid,否则返回串 public static (int, string) HttpPostErp(string param, string edtUserGuid = "", string abtGuid = "", string hNo = "", int urlType = 0) { int _rtn = 0; //日志详细,发送的时候,记录日志,存储过程调用的时候,再累加上mes业务的操作结果 System.Text.StringBuilder sbLog = new System.Text.StringBuilder(); sbLog.Append(DateTime.Now.ToString() + "开始发送"); string strLogGuid = Guid.NewGuid().ToString(); string url = AppSettingsHelper.getValueByKey("TestErpUrl"); if (urlType == 2) url = AppSettingsHelper.getValueByKey("TestErpUrl2"); HttpWebRequest request = null; StreamWriter requestStream = null; WebResponse response = null; string responseStr = ""; try { request = (HttpWebRequest)WebRequest.Create(url); request.Method = "POST"; request.ContentType = "application/json"; request.Accept = "*/*"; request.Timeout = 150000; request.AllowAutoRedirect = false; request.ServicePoint.Expect100Continue = false; HttpRequestCachePolicy noCachePolicy = new HttpRequestCachePolicy(HttpRequestCacheLevel.NoCacheNoStore); request.CachePolicy = noCachePolicy; requestStream = new StreamWriter(request.GetRequestStream()); requestStream.Write(param); requestStream.Close(); response = request.GetResponse(); if (response != null) { var reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8); responseStr = reader.ReadToEnd(); reader.Close(); } } catch (Exception ex) { LogHelper.Debug(url, "HttpPostErp response:" + param + ",ex:" + ex.Message); responseStr = ex.Message; _rtn = -1; } finally { request = null; requestStream = null; response = null; } if (_rtn != -1) { Result _result = JsonConvert.DeserializeObject(responseStr); if ("200".Equals(_result.state)) _rtn = 1; } sbLog.Append("," + DateTime.Now.ToString() + "结束发送"); if (_rtn > 0) sbLog.Append(",发送成功"); else sbLog.Append(",发送失败,mes退出操作"); try { SqlParameter[] parameters = { new("@edtUserGuid", edtUserGuid), new("@abtGuid", abtGuid), new("@abtTable", ""), new("@detail", sbLog.ToString()), new("@hNo", hNo), new("@RtnLogGuid", strLogGuid), new("@SendJson", param), new("@RtnJson", responseStr), new("@isSuccess", (_rtn>0?1:0)), new("@isErp", 1), }; DbHelperSQL.RunProcedure("[prc_log_create]", parameters); } catch (Exception ex) { LogHelper.Debug(url, "HttpPostErp 写入日志表" + ex.Message); } return (_rtn, (_rtn > 0 ? strLogGuid : responseStr)); } } public class Result { /// /// 200成功,否则失败 /// public string? state { get; set; } public string? msg { get; set; } public string? status { get; set; } public string? message { get; set; } }