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