From 14871658161da6574d687dc090d69aba1a768913 Mon Sep 17 00:00:00 2001 From: SHM Date: Wed, 17 Dec 2025 10:59:15 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20SystemX.Core=20?= =?UTF-8?q?Http=20Put=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Projects/DLL/SystemX.Core.dll | Bin 54784 -> 56832 bytes .../SystemX.Core/Communication/Http.cs | 52 +++++++++++++++++- 2 files changed, 51 insertions(+), 1 deletion(-) diff --git a/Projects/DLL/SystemX.Core.dll b/Projects/DLL/SystemX.Core.dll index edd1a49344ba8f1827f01190e8a64d3c1a947efc..13fafeb271237f8eecadfdb76dac67c0ab64ce2f 100644 GIT binary patch delta 24443 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 delta 22690 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 F{{UM`+wlMZ diff --git a/Projects/SystemX.Core/SystemX.Core/Communication/Http.cs b/Projects/SystemX.Core/SystemX.Core/Communication/Http.cs index 6198ff4..0a040d0 100644 --- a/Projects/SystemX.Core/SystemX.Core/Communication/Http.cs +++ b/Projects/SystemX.Core/SystemX.Core/Communication/Http.cs @@ -1,4 +1,5 @@ -using Newtonsoft.Json.Linq; +using Azure.Core; +using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; @@ -95,6 +96,55 @@ namespace SystemX.Core.Communication return response; } + + /// + /// PutJsonAsnyc + /// + /// https://127.0.0.1:443 + /// Range 5~30 secconds + public virtual async Task PutJsonAsync(string url, REQUEST request, string bearerToken = "", short timeOutSeconds = 10) where REQUEST : class where RESPONSE : class + { + RESPONSE? response = default(RESPONSE); + Guid guid = Guid.NewGuid(); + + using (HttpClient httpClient = new HttpClient(GetClientHandler())) + { + var timeOutSec = SetTimeout(timeOutSeconds); + httpClient.Timeout = new TimeSpan(0, 0, timeOutSec); + httpClient.BaseAddress = new Uri($"{url}"); + + if (string.IsNullOrEmpty(bearerToken) == false) + httpClient.DefaultRequestHeaders.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue("Bearer", $"{bearerToken}"); + + int retry = 0; + while (true) + { + await Task.Delay(1); + try + { + LogXnet.WriteLine($"[PUT] Request({guid})::{url}{Environment.NewLine}{request?.ToJson()}", LogXLabel.HTTP); + + DateTime requestTime = DateTime.Now; + var res = await httpClient.PutAsJsonAsync(url, request); + response = await res.Content.ReadFromJsonAsync(); + + LogXnet.WriteLine($"[PUT] Rseponse({guid}) ({(DateTime.Now - requestTime).TotalSeconds} sec)::{url}{Environment.NewLine}{response?.ToJson()}", LogXLabel.HTTP); + break; + } + catch (Exception e) + { + LogXnet.WriteLine(e); + retry += 1; + } + + if (retry > 1) + break; + } + } + + return response; + } + public virtual async Task GetStreamAsync(string url, string bearerToken = "", short timeOutSeconds = 10) { Guid guid = Guid.NewGuid();