diff --git a/.vs/ICSSoft.FromERP/v16/.suo b/.vs/ICSSoft.FromERP/v16/.suo index 95e0e7b..d9031a3 100644 Binary files a/.vs/ICSSoft.FromERP/v16/.suo and b/.vs/ICSSoft.FromERP/v16/.suo differ diff --git a/ICSSoft.FromERP/App.config b/ICSSoft.FromERP/App.config index 4c4ab2f..5ed0c42 100644 --- a/ICSSoft.FromERP/App.config +++ b/ICSSoft.FromERP/App.config @@ -12,6 +12,9 @@ + + + diff --git a/ICSSoft.FromERP/HttpHelper.cs b/ICSSoft.FromERP/HttpHelper.cs index 3ed4bfa..7284e46 100644 --- a/ICSSoft.FromERP/HttpHelper.cs +++ b/ICSSoft.FromERP/HttpHelper.cs @@ -8,12 +8,13 @@ using System.Net; using System.Reflection; using System.Text; using System.Threading.Tasks; +using System.Net.Http.Headers; namespace ICSSoft.FromERP { public class HttpHelper { - + /// /// POST请求 /// @@ -21,7 +22,7 @@ namespace ICSSoft.FromERP /// 请求json /// token /// - public static async Task HttpClientPost(string url, string requestJson, string contentType = "application/json", string token = "") where T : new() + public static async Task HttpClientPost(string url, string requestJson, Dictionary dic=null , string contentType = "application/json", string token = "") where T : new() { string result = string.Empty; @@ -29,20 +30,87 @@ namespace ICSSoft.FromERP using (HttpContent httpContent = new StringContent(requestJson, System.Text.Encoding.UTF8, contentType)) { //使用注入的httpclientfactory获取client - using (var httpClient = new HttpClient()) + using (var httpClient = new HttpClient( )) { + + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; + // httpClient.BaseAddress. = HttpVersion.Version10; + // httpClient.DefaultRequestVersion = HttpVersion.Version30, + } + //设置请求头 //设置超时时间 if (!string.IsNullOrEmpty(token)) httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); + if (dic != null) + { + foreach (var item in dic) + { + httpClient.DefaultRequestHeaders.Add(item.Key, item.Value); + } + } + httpClient.Timeout = new TimeSpan(0, 0, 60); HttpResponseMessage res = httpClient.PostAsync(url, httpContent).Result; res.EnsureSuccessStatusCode(); - result = res.Content.ReadAsStringAsync().Result; + result = res.Content.ReadAsStringAsync().Result; + return JsonConvert.DeserializeObject(result); + } + } + + } + + public static async Task HttpClientPost2(string url, string requestJson, Dictionary dic, string contentType = "application/json") where T : new() + { + + string result = string.Empty; + Uri postUrl = new Uri(url); + + //使用注入的httpclientfactory获取client + using (var httpClient = new HttpClient()) + { + httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue(contentType)); + + using (StringContent strcontent = new StringContent(requestJson, Encoding.UTF8, contentType)) + { + var message = new HttpRequestMessage(HttpMethod.Post, url); + //设置cookie信息 + foreach (var item in dic) + { + message.Headers.Add(item.Key, item.Value); + } + + //设置contetn + message.Content = strcontent; + //发送请求 + var res = httpClient.SendAsync(message).Result; + res.EnsureSuccessStatusCode(); + result = await res.Content.ReadAsStringAsync(); return JsonConvert.DeserializeObject(result); } + + ////设置请求头 + ////设置超时时间 + //if (dic != null && dic.Count > 0) + //{ + // foreach (var item in dic) + // { + // httpClient.DefaultRequestHeaders.Add(item.Key, item.Value); + // } + //} + ////if (!string.IsNullOrEmpty(token)) + //// httpClient.DefaultRequestHeaders.Add("Authorization", "Bearer " + token); + //httpClient.Timeout = new TimeSpan(0, 0, 60); + //HttpResponseMessage res = httpClient.PostAsync(url, httpContent).Result; + //res.EnsureSuccessStatusCode(); + //result = await res.Content.ReadAsStringAsync(); + //return JsonConvert.DeserializeObject(result); } + } public static async Task HttpClientGet(string url, string contentType = "application/json", string token = "") where T : new() @@ -54,19 +122,20 @@ namespace ICSSoft.FromERP httpClient.Timeout = new TimeSpan(0, 0, 60); HttpResponseMessage res = httpClient.GetAsync(url).Result; res.EnsureSuccessStatusCode(); - var t = res.Content.ReadAsStringAsync().Result; + var t = res.Content.ReadAsStringAsync().Result; return JsonConvert.DeserializeObject(t); }; } - public static async Task PostForm(string Url, R message) where T : new() + public static async Task PostForm(string Url, R message, Dictionary dic=null) where T : new() { var res = new T(); using (HttpClient httpClient = new HttpClient()) { + httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/x-www-form-urlencoded")); var body = new List>(); foreach (PropertyInfo info in typeof(R).GetProperties()) { @@ -75,21 +144,98 @@ namespace ICSSoft.FromERP } var content = new FormUrlEncodedContent(body); httpClient.DefaultRequestHeaders.Add("Method", "Post"); - HttpResponseMessage response = await httpClient.PostAsync(Url, content); + if (dic != null) + { + foreach (var item in dic) + { + httpClient.DefaultRequestHeaders.Add(item.Key, item.Value); + } + } + HttpResponseMessage response = httpClient.PostAsync(Url, content).Result; if ((int)response.StatusCode == 200) { response.EnsureSuccessStatusCode(); - string result = response.Content.ReadAsStringAsync().Result; - res = JsonConvert.DeserializeObject(result); + } - else + string result = response.Content.ReadAsStringAsync().Result; + res = JsonConvert.DeserializeObject(result); + + } + return res; + } + + public static async Task HttpPostNoFile(string url, string data) + { + // Encoding encoding = Encoding.UTF8; + // string jsonParam = data; + HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; + request.Method = "post"; + request.ContentType = "application/json"; + + byte[] byteData = UTF8Encoding.UTF8.GetBytes(data.ToString()); + request.ContentLength = byteData.Length; + + using (Stream postStream = request.GetRequestStream()) + { + postStream.Write(byteData, 0, byteData.Length); + } + + using (HttpWebResponse response = (HttpWebResponse)request.GetResponse()) + { + using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.UTF8)) { - string result = response.Content.ReadAsStringAsync().Result; - res = JsonConvert.DeserializeObject(result); + var result= reader.ReadToEnd().ToString(); + + return JsonConvert.DeserializeObject(result); } } - return res; + } + + public static string PostData(byte[] data, string url, string contentType = "application/json", int timeout = 20) + { + //创建httpWebRequest对象 + HttpWebRequest httpRequest = null; + if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase)) + { + ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true; + ServicePointManager.SecurityProtocol = (SecurityProtocolType)3072; + httpRequest = WebRequest.Create(url) as HttpWebRequest; + httpRequest.ProtocolVersion = HttpVersion.Version10; + } + else + { + httpRequest = WebRequest.Create(url) as HttpWebRequest; + } + if (httpRequest == null) + { + throw new ApplicationException(string.Format("Invalid url string: {0}", url)); + } + //填充httpWebRequest的基本信息 + httpRequest.ContentType = contentType; + httpRequest.Method = "POST"; + httpRequest.Timeout = timeout * 1000; + //填充并发送要post的内容 + httpRequest.ContentLength = data.Length; + httpRequest.Headers.Add("deipaaskeyauth", "a5P1RTL4380zd9jpb57qXx63rdynUHN2"); + using (Stream requestStream = httpRequest.GetRequestStream()) + { + requestStream.Write(data, 0, data.Length); + requestStream.Close(); + } + //发送post请求到服务器并读取服务器返回信息 + var response = httpRequest.GetResponse(); + using (Stream responseStream = response.GetResponseStream()) + { + //读取服务器返回信息 + string stringResponse = string.Empty; + using (StreamReader responseReader = new StreamReader(responseStream, Encoding.UTF8)) + { + stringResponse = responseReader.ReadToEnd(); + } + responseStream.Close(); + return stringResponse; + } } } } diff --git a/ICSSoft.FromERP/ICSSoft.FromERP.csproj b/ICSSoft.FromERP/ICSSoft.FromERP.csproj index 0484405..7d21083 100644 --- a/ICSSoft.FromERP/ICSSoft.FromERP.csproj +++ b/ICSSoft.FromERP/ICSSoft.FromERP.csproj @@ -26,7 +26,7 @@ true full false - ..\Root\ + bin\Debug\ DEBUG;TRACE prompt 4 diff --git a/ICSSoft.FromERP/SyncCas_Jinyang.cs b/ICSSoft.FromERP/SyncCas_Jinyang.cs index 81648f6..298dbcd 100644 --- a/ICSSoft.FromERP/SyncCas_Jinyang.cs +++ b/ICSSoft.FromERP/SyncCas_Jinyang.cs @@ -44,50 +44,51 @@ namespace ICSSoft.FromERP DataTable dt = ICSHelper.GetERPDB(conStr); foreach (DataRow dr in dt.Rows) { - var dtNowBegin = new DateTime(2000, 1, 1, 0, 0, 0);//默认开始时间 - var dtNow = DateTime.Now; - string erpName = ICSHelper.GetConfigString()["ERPDB"]; - string TenantId = dr["TenantId"].ToString();//mes 组织 - string TenantCode = dr["TenantCode"].ToString(); - string ErpId = dr["ErpID"].ToString(); //erpID - string Class = this.GetType().Name + TenantCode; - erpName = string.Format(erpName, TenantId); + //var dtNowBegin = new DateTime(2000, 1, 1, 0, 0, 0);//默认开始时间 + //var dtNow = DateTime.Now; + //string erpName = ICSHelper.GetConfigString()["ERPDB"]; + //string TenantId = dr["TenantId"].ToString();//mes 组织 + //string TenantCode = dr["TenantCode"].ToString(); + //string ErpId = dr["ErpID"].ToString(); //erpID + //string Class = this.GetType().Name + TenantCode; + //erpName = string.Format(erpName, TenantId); - string sql0 = " SELECT top 1 ModifyDate FROM ICSERPTime where ClassName='" + Class + "'"; - var lastDate = ICSHelper.ExecuteScalar(conStr, sql0).ToDateOrNull(); - if (!lastDate.HasValue) - { - lastDate = dtNowBegin; - } + //string sql0 = " SELECT top 1 ModifyDate FROM ICSERPTime where ClassName='" + Class + "'"; + //var lastDate = ICSHelper.ExecuteScalar(conStr, sql0).ToDateOrNull(); + //if (!lastDate.HasValue) + //{ + // lastDate = dtNowBegin; + //} - string sql = @" select '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' as MTIME into #TempVendor "; - sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempVendor"); - sql += "DROP TABLE #TempVendor"; - ICSHelper.ExecuteDate(conStr, sql); + //string sql = @" select '" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "' as MTIME into #TempVendor "; + //sql = ICSHelper.Time(Namespace, Class, TenantId, sql, "#TempVendor"); + //sql += "DROP TABLE #TempVendor"; + //ICSHelper.ExecuteDate(conStr, sql); + List list = new List(); var input = new CapInputDto(); - input.WorkshopID = ""; - input.EquipmentID = ""; - input.ProductNo = ""; - input.LotNo = ""; - input.CollectionTime = ""; + input.WorkshopID = "1"; + input.EquipmentID = "1"; + input.ProductNo = "1"; + input.LotNo = "1"; + input.CollectionTime = "1"; input.ParamValue_Resistance = 12; input.ParamValue_Height = 12; input.Msg = ""; - var inputObj = JsonConvert.SerializeObject(input); - string url = ICSHelper.GetConfigString()["WeiMasErpUrl"] + @"/BasicAssistingService/FromWeMec/APIVenderToMES"; + list.Add(input); + + var inputObj = JsonConvert.SerializeObject(list); + //string url = ICSHelper.GetConfigString()["JinyangCapUrl"]+ @"?deipaaskeyauth=a5P1RTL4380zd9jpb57qXx63rdynUHN2"; + string url = ICSHelper.GetConfigString()["JinyangCapUrl"]; - var result = HttpHelper.HttpClientPost(url, inputObj).Result; + var result = HttpHelper.HttpClientPost(url, inputObj, new Dictionary() { { "deipaaskeyauth", "a5P1RTL4380zd9jpb57qXx63rdynUHN2" } }).Result; + // var result = HttpHelper.HttpClientPost(url, inputObj).Result; if (result.Result == "OK") { - - - // insertSql += "DROP TABLE #tempFromErp4Vendor"; - //ICSHelper.ExecuteDate(conStr, insertSql); } else { diff --git a/ICSSoft.Test/Program.cs b/ICSSoft.Test/Program.cs index d593f5c..0dba83b 100644 --- a/ICSSoft.Test/Program.cs +++ b/ICSSoft.Test/Program.cs @@ -13,7 +13,7 @@ namespace ICSSoft.Test //ICSVendor test = new ICSVendor(); //test.Execute(); - SyncCustomer_WeiMas test = new SyncCustomer_WeiMas(); + SyncCas_Jinyang test = new SyncCas_Jinyang(); test.Execute(); // var ss= ICSHelper.ApiSign("sj_w_id", "70FF7F01C5899A5ACAAD4ECB7FA5B3C5", 1724650261);