From c9c91ad3e3ac218d81c86809c93a35622b51a686 Mon Sep 17 00:00:00 2001 From: schangxiang@126.com <schangxiang@126.com> Date: 周三, 17 9月 2025 16:05:05 +0800 Subject: [PATCH] 初步 增加 推送线程 --- DEmon/iWareCc/SystemInteraction/HTTPService.cs | 493 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 493 insertions(+), 0 deletions(-) diff --git a/DEmon/iWareCc/SystemInteraction/HTTPService.cs b/DEmon/iWareCc/SystemInteraction/HTTPService.cs new file mode 100644 index 0000000..b982817 --- /dev/null +++ b/DEmon/iWareCc/SystemInteraction/HTTPService.cs @@ -0,0 +1,493 @@ +锘縰sing Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Net; +using System.Net.Http; +using System.Text; + +namespace iWareCc +{ + public class HTTPService + { + private string BaseURI = ""; + public HTTPService(string baseURI) + { + this.BaseURI = baseURI; + } + + #region GET璋冪敤webapi鍏叡鏂规硶 + + /// <summary> + /// 閫氳繃GET鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <typeparam name="T">鍏ュ弬绫诲瀷</typeparam> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public T getContent<T>(string url, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + using (HttpResponseMessage response = client.GetAsync(url).Result) + { + if (response.IsSuccessStatusCode) + { + var str_result = response.Content.ReadAsStringAsync().Result; + T result = JsonConvert.DeserializeObject<T>(str_result); + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + + /// <summary> + /// 閫氳繃GET鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string getContentForString(string url, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + using (HttpResponseMessage response = client.GetAsync(url).Result) + { + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父,response:" + JsonConvert.SerializeObject(response)); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "},response:" + JsonConvert.SerializeObject(response)); + } + } + } + catch + { + throw; + } + } + #endregion + + #region POST璋冪敤webapi鍏叡鏂规硶 + + /// <summary> + /// 閫氳繃POST鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <typeparam name="T">鍏ュ弬绫诲瀷</typeparam> + /// <typeparam name="T2">鍑哄弬绫诲瀷</typeparam> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public T2 postContent<T, T2>(string url, T parameter, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.DefaultRequestHeaders.Add("Authorization", "123456"); + client.Timeout = new TimeSpan(0, 0, timeout); + + string str = JsonConvert.SerializeObject(parameter); + var httpContent = new StringContent(str, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var str_result = response.Content.ReadAsStringAsync().Result; + T2 result = JsonConvert.DeserializeObject<T2>(str_result); + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + + /// <summary> + /// 閫氳繃POST鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string postContentForString(string url, IDictionary<string, string> parameter, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + string str = JsonConvert.SerializeObject(parameter); + var httpContent = new StringContent(str, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + return response.StatusCode.ToString(); + // throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + return response.StatusCode.ToString(); + // throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + + /// <summary> + /// 閫氳繃POST鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬瀛楃涓�</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string postContentForString(string url, string parameter, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + var ee = new { name = parameter }; + if (parameter=="") + { + parameter = ee.ToString(); + } + + var httpContent = new StringContent(parameter, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + return response.StatusCode.ToString(); + // throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + return response.StatusCode.ToString(); + // throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch (Exception ex) + { + throw; + } + } + + /// <summary> + /// 閫氳繃POST鏂规硶璋冪敤HTTP鏈嶅姟(AGV涓撶敤) + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬瀛楃涓�</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string postContentForStringForAgv(string url, string parameter, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + var ee = new { name = parameter }; + if (parameter == "") + { + parameter = ee.ToString(); + } + + var httpContent = new StringContent(parameter, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + } + catch (Exception ex) + { + throw; + } + } + + + /// <summary> + /// 閫氳繃POST鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬瀛楃涓�</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string postContentForStringWithToken(string url, string parameter, + Guid requestId, string token, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.DefaultRequestHeaders.Add("Authorization", token.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + var httpContent = new StringContent(parameter, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PostAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + + #endregion + + #region PUT璋冪敤webapi鍏叡鏂规硶 + + /// <summary> + /// 閫氳繃PUT鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <typeparam name="T">鍏ュ弬绫诲瀷</typeparam> + /// <typeparam name="T2">鍑哄弬绫诲瀷</typeparam> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public T2 putContent<T, T2>(string url, T parameter, Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + string str = JsonConvert.SerializeObject(parameter); + var httpContent = new StringContent(str, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PutAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var str_result = response.Content.ReadAsStringAsync().Result; + T2 result = JsonConvert.DeserializeObject<T2>(str_result); + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + + /// <summary> + /// 閫氳繃PUT鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string putContentForString(string url, IDictionary<string, string> parameter, + Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + string str = JsonConvert.SerializeObject(parameter); + var httpContent = new StringContent(str, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PutAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + + /// <summary> + /// 閫氳繃POST鏂规硶璋冪敤HTTP鏈嶅姟 + /// </summary> + /// <param name="url">鏈嶅姟鍦板潃</param> + /// <param name="parameter">鍏ュ弬瀛楃涓�</param> + /// <param name="requestId">鍙戣捣璇锋眰鐨勮涓烘爣璇�</param> + /// <param name="timeout">瓒呮椂鏃堕棿锛屽崟浣嶏細绉掞紝榛樿涓�30绉�</param> + /// <returns></returns> + public string putContentForString(string url, string parameter, + Guid requestId, int timeout = 30) + { + try + { + var client = new HttpClient(); + + client.BaseAddress = new Uri(this.BaseURI); + client.DefaultRequestHeaders.Accept.Clear(); + client.DefaultRequestHeaders.Accept.Add(new System.Net.Http.Headers.MediaTypeWithQualityHeaderValue("application/json")); + client.DefaultRequestHeaders.Add("RequestId", requestId.ToString()); + client.Timeout = new TimeSpan(0, 0, timeout); + + var httpContent = new StringContent(parameter, Encoding.UTF8); + httpContent.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("application/json") { CharSet = "utf-8" }; + using (HttpResponseMessage response = client.PutAsync(url, httpContent).Result) + { + if (response.IsSuccessStatusCode) + { + var result = response.Content.ReadAsStringAsync().Result; + return result; + } + else if (response.StatusCode == HttpStatusCode.InternalServerError) + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父"); + } + else + { + throw new Exception("{" + this.BaseURI + "}琚皟鐢ㄧ殑HTTP鏈嶅姟鎺ュ彛{" + url + "}鍐呴儴鍙戠敓寮傚父{" + response.StatusCode + "}"); + } + } + } + catch + { + throw; + } + } + #endregion + } +} -- Gitblit v1.9.3