using Confluent.Kafka; using IvfTl.Control.Entity.GlobalEnums; using IvfTl.Control.Services.HttpServices; using Microsoft.IdentityModel.Logging; using MySqlX.XDevAPI; using NetTaste; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Net.Http.Headers; using System.Net; using System.Security.Principal; namespace ivf_tl_ServicesImpl.HttpServices { public class HttpServiceImplNo { public event Action ErrorLogEvent; public event Action ExceptionLogEvent; private string token = null; private HttpClient client = null; public HttpServiceImplNo(string baseAddress) { client = new HttpClient() { BaseAddress = new Uri(baseAddress), Timeout = new TimeSpan(0, 0, 10)// 10是秒数,用于设置超时时长 }; } private void ExLog(Exception ex, string name) { ExceptionLogEvent?.Invoke(ex, $"HttpServiceImpl.{name}",null, LogEnum.RunException); } private void ErrorLog(string message, LogEnum logType) { ErrorLogEvent?.Invoke($"HttpServiceImpl.{message}", logType); } public string GetToken() { if(token == null) { token = "eyJhbGciOiJSUzI1NiJ9.eyJ1c2VyIjoie1wiYWNjb3VudFwiOlwiYWRtaW5cIixcImFsbG93QWNjZXNzTGlzdFwiOltcIi9hcGkvZ2F0ZXdheS9hdXRoL3Blcm1pc3Npb24vc2NhblBlcm1pc3Npb25cIixcIi9hZGRcIixcIi9tYXJrL2xpc3RcIixcIi9wZXJtaXNzaW9uL2dldFBlcm1pc3Npb25CeUlkXCIsXCIvdXNlci9wYWdlbGlzdFwiLFwiL3Blcm1pc3Npb24vZGVsZXRlUGVybWlzc2lvblwiLFwiL2FsYXJtU3lzU2V0dGluZy9kZWxldGVBbGFybVRlbXBsYXRlQnlJZFwiLFwiL3Blcm1pc3Npb24vYXNzaWduZWRQZXJtaXNzaW9uc1wiLFwiL21hcmsvdXBkYXRlXCIsXCIvcm9sZS9nZXRVc2VyQnlSb2xlSWRcIixcIi9yb2xlL2xpc3RcIixcIi9hbGFybS9nZXRBbGFybU51bVwiLFwiL3Rlc3QvdGVzdFwiLFwiL2FsYXJtU3lzU2V0dGluZy9nZXRBbGFybVR5cGVMaXN0XCIsXCIvYWxhcm1TZXR0aW5nL2RlbGV0ZUFsYXJtUGVyc29ubmVsXCIsXCIvcm9sZS9nZXRQZXJtaXNzaW9uQnlSb2xlSWRcIixcIi9sb2dvdXRcIixcIi9wZXJtaXNzaW9uL3BhZ2VsaXN0XCIsXCIvYWxhcm1TZXR0aW5nL3VwZGF0ZUFsYXJtUGVyc29ubmVsXCIsXCIvYWxhcm1TeXNTZXR0aW5nL3VwZGF0ZUFsYXJtVGVtcGxhdGVcIixcIi9hbGFybVNldHRpbmcvZ2V0VHlwZUFuZFRlbXBsYXRlTGlzdFwiLFwiL3JvbGUvdXBkYXRlXCIsXCIvYWxhcm0vZ2V0QWxhcm1cIixcIi9yb2xlL3BhZ2VsaXN0XCIsXCIvZ2F0ZXdheS9zY2FuUGVybWlzc2lvbi9nZXRJbml0UGVybWlzc2lvbkluZm9cIixcIi9wZXJtaXNzaW9uL2dldFVuYXNzaWduZWRQZXJtaXNzaW9uc1wiLFwiL2FsYXJtU3lzU2V0dGluZy9nZXRBbGFybVRlbXBsYXRlQnlJZFwiLFwiL3Blcm1pc3Npb24vZ2V0QWxsUGVybWlzc2lvblR5cGVcIixcIi9sb2dpblwiLFwiL3JvbGUvZGVsZXRlUm9sZVwiLFwiL2FsYXJtU2V0dGluZy9nZXRBbGFybVBlcnNvbm5lbGxpc3RcIixcIi9wZXJtaXNzaW9uL3NhdmVcIixcIi9tYXJrL2lkXCIsXCIvdXNlci91cGRhdGVcIixcIi9hbGFybVNldHRpbmcvZ2V0VHlwZUFuZFRlbXBsYXRlQnlJZFwiLFwiL3Blcm1pc3Npb24vdXBkYXRlXCIsXCIvdXNlci9zYXZlXCIsXCIvYWxhcm1TeXNTZXR0aW5nL3VwZGF0ZVwiLFwiL3VzZXIvZGVsZXRlVXNlclwiLFwiL2FsYXJtU3lzU2V0dGluZy9nZXRBbGFybVR5cGVQYWdlTGlzdFwiLFwiL2FsYXJtU2V0dGluZy9hZGRBbGFybVBlcnNvbm5lbFwiLFwiL2FsYXJtU2V0dGluZy91cGRhdGVQZXJzb25uZWxQZXJtaXNzaW9uXCIsXCIvY29udHJvbC9zY2FuUGVybWlzc2lvbi9nZXRJbml0UGVybWlzc2lvbkluZm9cIixcIi9hbGFybVN5c1NldHRpbmcvZ2V0QWxhcm1UZW1wbGF0ZVBhZ2VMaXN0XCIsXCIvcGVybWlzc2lvbi9nZXRBbGxBc3NpZ25lZFwiLFwiL3Rlc3QvNy03XCIsXCIvcm9sZS9zYXZlXCIsXCIvYWxhcm1TeXNTZXR0aW5nL3NhdmVBbGFybVRlbXBsYXRlXCIsXCIvdXBkYXRlXCIsXCIvdXNlci9yZXNldFBhc3N3b3JkXCIsXCIvc2NhblBlcm1pc3Npb24vZ2V0SW5pdFBlcm1pc3Npb25JbmZvXCIsXCIvYWxhcm1TeXNTZXR0aW5nL2RlbGV0ZUFsYXJtVHlwZVwiLFwiL3VzZXIvdXBkYXRlUGFzc3dvcmRcIixcIi9yb2xlL2Fzc2lnbkF1dGhvcml0eVwiLFwiL2FsYXJtU3lzU2V0dGluZy9zYXZlXCJdLFwidXNlcm5hbWVcIjpcImFkbWluXCJ9IiwianRpIjoiTVdaak9XUXpPRGd0WVRKa09DMDBaamszTFRsak1tVXRZakE1TmpVNVptWXpNRGszIn0.WsjkouFpFfAGzYQ07vPbZwiOU462NprPe_5ITpMHnCpjqJAfcUkiKBddgm86XvjGESmcaZKE_hWKaMPIIIRxngOtJ-wlV1cGs9T1jjgWHMj9BfD0zbmKCYvTo7ZtQlkNFoZ5Ac_vj1BT2f7RVFuwENZeVakdfNcCykPXl1AaiVnoqqj_6tX6neJpDQxz1tKgqkXf3X-QBhRN8s_uY0UGSTgzK4gaKhn-Mk4lu18liBwkQ4RUSmJE8uhP9k4yd1z8RY_zm2eed5HgnppZA_zpz2ost1mblaDLf924cgKp-NGPctbTkKQpghC894sidjhyvY85oSzOq5yV1fdMVJSPuQ"; } return token; } public string callWebService(string url) { string name = "callWebService"; try { if (string.IsNullOrEmpty(GetToken())) return null; if (client.DefaultRequestHeaders.Contains("token")) { client.DefaultRequestHeaders.Remove("token"); } client.DefaultRequestHeaders.Add("token", token); //访问记录 ErrorLogEvent?.Invoke($"[url:{url}]", LogEnum.HttpClient); HttpContent httpContent = new StringContent(""); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); httpContent.Headers.ContentType.CharSet = "utf-8"; HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result; string rsString = null; if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK) { rsString = responseMessage.Content.ReadAsStringAsync().Result; //返回记录 ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); } else { ErrorLog($"访问服务器失败:[url:{url}]", LogEnum.RunError); } return rsString; } catch (Exception ex) { ExLog(ex, $"callWebService:{url}"); return null; } } public string callWebService(string url, string body) { string name = "callWebService"; try { if (string.IsNullOrEmpty(GetToken())) return null; if (client.DefaultRequestHeaders.Contains("token")) { client.DefaultRequestHeaders.Remove("token"); } client.DefaultRequestHeaders.Add("token", token); //访问记录 ErrorLogEvent?.Invoke($"[url:{url}][参数:{body}]", LogEnum.HttpClient); HttpContent httpContent = new StringContent(body); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); httpContent.Headers.ContentType.CharSet = "utf-8"; HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result; string rsString = null; if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK) { rsString = responseMessage.Content.ReadAsStringAsync().Result; //返回记录 ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); } else { ErrorLog($"访问服务器失败:[url:{url}][参数:{body}]", LogEnum.RunError); } return rsString; } catch (Exception ex) { ExLog(ex, $"callWebService:[url:{url}][body:{body}]"); return null; } } public string callWebService(string url, Dictionary body) { string name = "callWebService"; try { if (string.IsNullOrEmpty(GetToken())) return null; if (client.DefaultRequestHeaders.Contains("token")) { client.DefaultRequestHeaders.Remove("token"); } client.DefaultRequestHeaders.Add("token", token); //访问记录 ErrorLogEvent?.Invoke($"[url:{url}][参数:{JsonConvert.SerializeObject(body)}]", LogEnum.HttpClient); var responseMessage = client.PostAsync(url, new FormUrlEncodedContent(body)).Result; string rsString = null; if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK) { rsString = responseMessage.Content.ReadAsStringAsync().Result; //返回记录 ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); } else { ErrorLog($"访问服务器失败:[url:{url}][body:{JsonConvert.SerializeObject(body)}]", LogEnum.RunError); } return rsString; } catch (Exception ex) { ExLog(ex, $"callWebService:[url:{url}][body:{JsonConvert.SerializeObject(body)}]"); return null; } } public string callWebServiceNoToken(string url, string body) { string name = "callWebService"; try { if (client.DefaultRequestHeaders.Contains("token")) { client.DefaultRequestHeaders.Remove("token"); } //访问记录 ErrorLogEvent?.Invoke($"[url:{url}][参数:{body}]", LogEnum.HttpClient); HttpContent httpContent = new StringContent(body); httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); httpContent.Headers.ContentType.CharSet = "utf-8"; HttpResponseMessage responseMessage = client.PostAsync(url, httpContent).Result; string rsString = null; if (responseMessage.StatusCode == System.Net.HttpStatusCode.OK) { rsString = responseMessage.Content.ReadAsStringAsync().Result; //返回记录 ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); } else { ErrorLog($"访问服务器失败:[url:{url}][body:{body}]", LogEnum.RunError); } return rsString; } catch (Exception ex) { ExLog(ex, $"callWebService:[url:{url}][body:{body}]"); return null; } } //public string GetMethod(string url, string Token) //{ // try // { // string rsString = null; // using (HttpClient client = new HttpClient()) // { // try // { // ErrorLogEvent?.Invoke($"[url:{url}]", LogEnum.HttpClient); // client.Timeout = new TimeSpan(0, 0, 10); // 10是秒数,用于设置超时时长 // client.DefaultRequestHeaders.Add("token", Token); // //client.DefaultRequestHeaders.Connection.Add("keep-alive"); // HttpResponseMessage res = client.GetAsync(url).GetAwaiter().GetResult(); // if (res.StatusCode == System.Net.HttpStatusCode.OK) // { // rsString = res.Content.ReadAsStringAsync().Result; // ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); // } // else // { // ErrorLogEvent?.Invoke($"GetMethod访问服务器连接失败{res.StatusCode}:{url}", LogEnum.RunError); // } // } // catch (Exception ex) // { // ExceptionLogEvent?.Invoke(ex, "GetMethod调用using", null, LogEnum.RunException); // } // finally // { // client.Dispose(); // } // } // return rsString; // } // catch (Exception ex1) // { // ExceptionLogEvent?.Invoke(ex1, "GetMethod调用", null, LogEnum.RunException); // return null; // } //} //public string PostMethod(string url, string body, string Token) //{ // try // { // string rsString = null; // using (HttpClient client = new HttpClient()) // { // try // { // ErrorLogEvent?.Invoke($"[url:{url}][body:{body}]", LogEnum.HttpClient); // HttpContent content = new StringContent(body); // content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json"); // client.Timeout = new TimeSpan(0, 0, 10); // 10是秒数,用于设置超时时长 // client.DefaultRequestHeaders.Add("token", Token); // //client.DefaultRequestHeaders.Connection.Add("keep-alive"); // HttpResponseMessage res = client.PostAsync(url, content).GetAwaiter().GetResult(); // if (res.StatusCode == System.Net.HttpStatusCode.OK) // { // rsString = res.Content.ReadAsStringAsync().Result; // ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); // } // else // { // ErrorLogEvent?.Invoke($"PostMethod访问服务器连接失败{res.StatusCode}:{body}", LogEnum.RunError); // } // } // catch (Exception ex) // { // ExceptionLogEvent?.Invoke(ex, "PostMethod调用using", null, LogEnum.RunException); // } // finally // { // client.Dispose(); // } // } // return rsString; // } // catch (Exception ex1) // { // ExceptionLogEvent?.Invoke(ex1, "PostMethod调用", null, LogEnum.RunException); // return null; // } //} //public string PostMethod(string url, Dictionary dic, string Token) //{ // try // { // string rsString = null; // using (HttpClient client = new HttpClient()) // { // ErrorLogEvent?.Invoke($"[url:{url}][dic:{JsonConvert.SerializeObject(dic)}]", LogEnum.HttpClient); // client.Timeout = new TimeSpan(0, 0, 10); // 10是秒数,用于设置超时时长 // client.DefaultRequestHeaders.Add("token", Token); // var response = client.PostAsync(url, new FormUrlEncodedContent(dic)).Result; // if (response.StatusCode == System.Net.HttpStatusCode.OK) // { // rsString = response.Content.ReadAsStringAsync().Result; // ErrorLogEvent?.Invoke($"返回结果:{rsString}", LogEnum.HttpClient); // } // else // { // ErrorLogEvent?.Invoke($"PostMethod访问服务器连接失败{response.StatusCode}:{JsonConvert.SerializeObject(dic)}", LogEnum.RunError); // } // } // return rsString; // } // catch (Exception ex) // { // ExceptionLogEvent?.Invoke(ex, "PostMethod调用", null, LogEnum.RunException); // return null; // } //} //public string PostMethod1(string url, string body, string Token) //{ // try // { // string returnString; // HttpWebRequest request = WebRequest.Create(url) as HttpWebRequest; // request.Method = "POST"; // request.ContentType = "application/json; charset=UTF-8"; // request.Headers.Add(HttpRequestHeader.Authorization, "Bearer " + Token); // if (string.IsNullOrEmpty(body)) // { // request.ContentLength = 0; // } // else // { // byte[] data = Encoding.UTF8.GetBytes(body); // request.ContentLength = data.Length; // using (Stream reqStream = request.GetRequestStream()) // { // reqStream.Write(data, 0, data.Length); // reqStream.Close(); // } // } // request.Timeout = 1000 * 5; // HttpWebResponse response = request.GetResponse() as HttpWebResponse; // if (response.StatusCode != System.Net.HttpStatusCode.OK) // { // ErrorLogEvent?.Invoke($"访问服务器连接失败{response.StatusCode.ToString()}:{body}", LogEnum.RunError); // return null; // } // string encoding = response.ContentEncoding; // if (encoding == null || encoding.Length < 1) // { // encoding = "UTF-8"; // } // using (StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(encoding))) // { // returnString = reader.ReadToEnd(); // response.Close(); // } // if (string.IsNullOrEmpty(returnString)) // { // return null; // } // return returnString; // } // catch (Exception ex) // { // ExceptionLogEvent?.Invoke(ex, "Post调用", null, LogEnum.RunException); // return null; // } //} } }