|  |  |  | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public class HttpHelper | 
|---|
|  |  |  | { | 
|---|
|  |  |  | public static async Task<string> GetAsync(string serviceAddress, string contentType = "application/json", Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | public static async Task<string> GetAsync(string serviceAddress, Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | DateTime beginDate = DateTime.Now; | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | using HttpClient httpClient = new HttpClient(); | 
|---|
|  |  |  | httpClient.Timeout = new TimeSpan(0, 0, 60); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (headers != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = await httpClient.GetAsync(serviceAddress).Result.Content.ReadAsStringAsync(); | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Console.WriteLine(e.Message); | 
|---|
|  |  |  | throw new Exception(e.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | finally | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Logger.Add(serviceAddress, "", result, beginDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static async Task<string> PostAsync(string serviceAddress, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | public static async Task<string?> PostAsync(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | DateTime beginDate = DateTime.Now; | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | using (HttpContent httpContent = new StringContent(requestJson)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); | 
|---|
|  |  |  | using HttpClient httpClient = new HttpClient(); | 
|---|
|  |  |  | httpClient.Timeout = new TimeSpan(0, 0, 60); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | if (headers != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = await httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync(); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Console.WriteLine(e.Message); | 
|---|
|  |  |  | throw new Exception(e.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | finally | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Logger.Add(serviceAddress, requestJson, result, beginDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static string Get(string serviceAddress, string contentType = "application/json", Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | DateTime beginDate = DateTime.Now; | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | using HttpClient httpClient = new HttpClient(); | 
|---|
|  |  |  | httpClient.Timeout = new TimeSpan(0, 0, 60); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | if (headers != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = httpClient.GetStringAsync(serviceAddress).Result; | 
|---|
|  |  |  | return result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Console.WriteLine(e.Message); | 
|---|
|  |  |  | throw new Exception(e.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | finally | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Logger.Add(serviceAddress, "", result, beginDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static string Post(string serviceAddress, string requestJson = null, string contentType = "application/json", Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | public static string Post(string serviceAddress, string requestJson = "", string contentType = "application/json", Dictionary<string, string>? headers = null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | DateTime beginDate = DateTime.Now; | 
|---|
|  |  |  | try | 
|---|
|  |  |  | { | 
|---|
|  |  |  | string result = string.Empty; | 
|---|
|  |  |  | using (HttpContent httpContent = new StringContent(requestJson)) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | httpContent.Headers.ContentType = new MediaTypeHeaderValue("application/json"); | 
|---|
|  |  |  | using HttpClient httpClient = new HttpClient(); | 
|---|
|  |  |  | httpClient.Timeout = new TimeSpan(0, 0, 60); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | if (serviceAddress.Contains("cimforce/AtomJsonService")) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | httpClient.Timeout = new TimeSpan(0, 0, 30); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | if (headers != null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | foreach (var header in headers) | 
|---|
|  |  |  | httpClient.DefaultRequestHeaders.Add(header.Key, header.Value); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | result = httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync().Result; | 
|---|
|  |  |  | } | 
|---|
|  |  |  | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception e) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Console.WriteLine(e.Message); | 
|---|
|  |  |  | throw new Exception(e.Message); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | return null; | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | public static T Post<T>(string url, object parm, string rquestName = "") where T : class | 
|---|
|  |  |  | { | 
|---|
|  |  |  | HttpWebResponse response = null; | 
|---|
|  |  |  | StreamReader resultReader = null; | 
|---|
|  |  |  | string responseContent = string.Empty; | 
|---|
|  |  |  | try | 
|---|
|  |  |  | finally | 
|---|
|  |  |  | { | 
|---|
|  |  |  | HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url); | 
|---|
|  |  |  | request.Timeout = 10 * 1000; | 
|---|
|  |  |  | request.Method = "POST"; | 
|---|
|  |  |  | request.ContentType = "application/json; charset=UTF-8"; | 
|---|
|  |  |  | parm = parm ?? ""; | 
|---|
|  |  |  | byte[] data = Encoding.UTF8.GetBytes(JsonConvert.SerializeObject(parm)); | 
|---|
|  |  |  | request.ContentLength = data.Length; | 
|---|
|  |  |  | using (Stream newStream = request.GetRequestStream()) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | newStream.Write(data, 0, data.Length); | 
|---|
|  |  |  | }; | 
|---|
|  |  |  |  | 
|---|
|  |  |  | response = (HttpWebResponse)request.GetResponse(); | 
|---|
|  |  |  | Stream webStream = response.GetResponseStream(); | 
|---|
|  |  |  | if (webStream == null) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception("Network error"); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | int statsCode = (int)response.StatusCode; | 
|---|
|  |  |  | resultReader = new StreamReader(webStream, Encoding.UTF8); | 
|---|
|  |  |  | responseContent = resultReader.ReadToEnd(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (response != null) | 
|---|
|  |  |  | response.Close(); | 
|---|
|  |  |  | if (resultReader != null) | 
|---|
|  |  |  | resultReader.Close(); | 
|---|
|  |  |  |  | 
|---|
|  |  |  | if (statsCode != 200) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | throw new Exception("å¼å¸¸ï¼ååºç ï¼" + statsCode.ToString()); | 
|---|
|  |  |  | } | 
|---|
|  |  |  |  | 
|---|
|  |  |  | Logger.Write_Log("System/API请æ±", rquestName, "è¯·æ±æå", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent }); | 
|---|
|  |  |  | return JsonConvert.DeserializeObject<T>(responseContent); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | catch (Exception ex) | 
|---|
|  |  |  | { | 
|---|
|  |  |  | Logger.Write_Log("System/API请æ±", rquestName, "请æ±å¼å¸¸", new { è¯·æ±æ¥æ = parm, æ¥æ¶æ¥æ = responseContent, é误 = ex.Message }); | 
|---|
|  |  |  | throw ex; | 
|---|
|  |  |  | Logger.Add(serviceAddress, requestJson, result, beginDate); | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|
|  |  |  | } | 
|---|