| | |
| | | using System.Collections.Generic; |
| | | using System.Linq; |
| | | using System.Net.Http.Headers; |
| | | using System.Reflection.Metadata; |
| | | using System.Security.Policy; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using WIDESEAWCS_Core.LogHelper; |
| | | |
| | | namespace WIDESEAWCS_Core.Helper |
| | | { |
| | | |
| | | public class HttpHelper |
| | | { |
| | | public static async Task<string> GetAsync(string serviceAddress, Dictionary<string, object> parameters, string contentType = "application/json", Dictionary<string, string>? headers = null) |
| | |
| | | { |
| | | try |
| | | { |
| | | if (serviceAddress.Contains("http://c24-cellmi3:12020")) |
| | | { |
| | | // å° JSON å符串转æ¢ä¸ºåå
¸ |
| | | var parameters = JsonConvert.DeserializeObject<Dictionary<string, object>>(requestJson); |
| | | //if (serviceAddress.Contains("http://c24-cellmi3:12020")) |
| | | //{ |
| | | // // å° JSON å符串转æ¢ä¸ºåå
¸ |
| | | // var parameters = JsonConvert.DeserializeObject<Dictionary<string, object>>(requestJson); |
| | | |
| | | // å建ä¸ä¸ªæ°çåå
¸ï¼æé¤ RequestTime å SessionId |
| | | var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value); |
| | | // // å建ä¸ä¸ªæ°çåå
¸ï¼æé¤ RequestTime å SessionId |
| | | // var filteredParameters = parameters.Where(p => p.Key != "RequestTime" && p.Key != "SessionId").ToDictionary(p => p.Key, p => p.Value); |
| | | |
| | | string requestKey = $"{serviceAddress}:{JsonConvert.SerializeObject(filteredParameters)}"; |
| | | // string requestKey = $"{serviceAddress}:{JsonConvert.SerializeObject(filteredParameters)}"; |
| | | |
| | | // æ£æ¥è¯·æ±æ¬¡æ°åæ¶é´éå¶ |
| | | if (requestTracker.TryGetValue(requestKey, out var requestInfo)) |
| | | { |
| | | if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(3)) |
| | | { |
| | | // å¦æè¯·æ±æ¬¡æ°è¶
è¿éå¶ä¸æªè¶
è¿10åéï¼æåºå¼å¸¸ |
| | | throw new InvalidOperationException("è¯·æ±æ¬¡æ°å·²è¾¾å°éå¶ï¼è¯·ç¨ååè¯ã"); |
| | | } |
| | | } |
| | | // // æ£æ¥è¯·æ±æ¬¡æ°åæ¶é´éå¶ |
| | | // if (requestTracker.TryGetValue(requestKey, out var requestInfo)) |
| | | // { |
| | | // if (requestInfo.Count >= 5 && DateTime.Now < requestInfo.LastRequestTime.AddMinutes(3)) |
| | | // { |
| | | // // å¦æè¯·æ±æ¬¡æ°è¶
è¿éå¶ä¸æªè¶
è¿10åéï¼æåºå¼å¸¸ |
| | | // throw new InvalidOperationException("è¯·æ±æ¬¡æ°å·²è¾¾å°éå¶ï¼è¯·ç¨ååè¯ã"); |
| | | // } |
| | | // } |
| | | |
| | | // æ´æ°è¯·æ±è·è¸ªä¿¡æ¯ |
| | | if (requestTracker.ContainsKey(requestKey)) |
| | | { |
| | | requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now); |
| | | } |
| | | else |
| | | { |
| | | requestTracker[requestKey] = (1, DateTime.Now); |
| | | } |
| | | } |
| | | // // æ´æ°è¯·æ±è·è¸ªä¿¡æ¯ |
| | | // if (requestTracker.ContainsKey(requestKey)) |
| | | // { |
| | | // requestTracker[requestKey] = (requestInfo.Count + 1, DateTime.Now); |
| | | // } |
| | | // else |
| | | // { |
| | | // requestTracker[requestKey] = (1, DateTime.Now); |
| | | // } |
| | | //} |
| | | LogRequestParameters(requestJson, serviceAddress); |
| | | |
| | | string result = string.Empty; |
| | | using (HttpContent httpContent = new StringContent(requestJson)) |
| | | { |
| | |
| | | } |
| | | result = await httpClient.PostAsync(serviceAddress, httpContent).Result.Content.ReadAsStringAsync(); |
| | | } |
| | | LogResponseParameters(result, serviceAddress); |
| | | |
| | | return result; |
| | | } |
| | | catch (Exception e) |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine(e.Message); |
| | | LogErrorParameters(ex.StackTrace, ex.Message, serviceAddress); |
| | | Console.WriteLine(ex.Message); |
| | | } |
| | | return null; |
| | | } |
| | |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | private static void LogErrorParameters(string errordetail, string error, string url = "") |
| | | { |
| | | StringBuilder builder = new StringBuilder(); |
| | | builder.Append(Environment.NewLine); |
| | | builder.Append("---------------------------------------------"); |
| | | builder.Append(Environment.NewLine); |
| | | builder.Append("url:" + url + "å¼å¸¸è¯¦ç»ä¿¡æ¯: " + JsonConvert.SerializeObject(error)); |
| | | builder.Append("url:" + url + "å¼å¸¸ä¿¡æ¯: " + JsonConvert.SerializeObject(error)); |
| | | LogAPI.WriteInfo($"APIæ¥å£", $"{builder}"); |
| | | } |
| | | private static void LogRequestParameters(string parameters, string url = "") |
| | | { |
| | | StringBuilder builder = new StringBuilder(); |
| | | builder.Append(Environment.NewLine); |
| | | builder.Append("---------------------------------------------"); |
| | | builder.Append(Environment.NewLine); |
| | | builder.Append("url:" + url + "请æ±åæ°: " + JsonConvert.SerializeObject(parameters)); |
| | | LogAPI.WriteInfo($"APIæ¥å£", $"{builder}"); |
| | | } |
| | | |
| | | private static void LogResponseParameters(string responseBody, string url = "") |
| | | { |
| | | StringBuilder builder = new StringBuilder(); |
| | | builder.Append(Environment.NewLine); |
| | | builder.Append("url:" + url + "ååºåæ°: " + responseBody); |
| | | builder.Append(Environment.NewLine); |
| | | builder.Append("---------------------------------------------"); |
| | | builder.Append(Environment.NewLine); |
| | | |
| | | LogAPI.WriteInfo($"APIæ¥å£", $"{builder}"); |
| | | } |
| | | } |
| | | } |