using Newtonsoft.Json; using System.Data.SqlClient; using System.Dynamic; using System.Net; using System.Net.Cache; using System.Text; 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"); } else if (urlType == 3) { url = AppSettingsHelper.getValueByKey("TestErpUrl3"); } else if (urlType == 4) { url = AppSettingsHelper.getValueByKey("TestErpUrl4"); } 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(); } // LogHelper.Debug(url, "HttpPostErp response:" + param + ",response:" + responseStr.ToString()); } catch (Exception ex) { LogHelper.Debug(url, "HttpPostErp response:" + param + ",ex:" + ex.Message); responseStr = ex.Message; _rtn = -1; } finally { request = null; requestStream = null; response = null; } //{"msg":"操作成功","code":200,"data":{"number":"CGSL168397","code":"200","id":"268781"}} if (_rtn != -1) { Result _result = JsonConvert.DeserializeObject(responseStr); if ("200".Equals(_result.code)) _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)); } } //{"msg":"操作成功","code":200,"data":{"number":"CGSL168397","code":"200","id":"268781"}} public class Result { /// /// 200成功,否则失败 /// /// public string? msg { get; set; } public string? code { get; set; } // public string? data { get; set; } }