From cfc36e80d4fbce5999715e3a830c9dd24e10d6c6 Mon Sep 17 00:00:00 2001 From: SHM Date: Mon, 2 Feb 2026 09:23:24 +0900 Subject: [PATCH] =?UTF-8?q?[=EC=84=B1=ED=98=84=EB=AA=A8]=20SystemX.Core=20?= =?UTF-8?q?Http=20PUT=20=EA=B8=B0=EB=8A=A5=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 56832 -> 62976 bytes .../SystemX.Core/Services/CommonService.cs | 16 ++ .../SystemX.Core/Services/HttpService.cs | 163 ++++++++++++++++++ 3 files changed, 179 insertions(+) create mode 100644 Projects/SystemX.Core/SystemX.Core/Services/CommonService.cs create mode 100644 Projects/SystemX.Core/SystemX.Core/Services/HttpService.cs diff --git a/Projects/DLL/SystemX.Core.dll b/Projects/DLL/SystemX.Core.dll index 13fafeb271237f8eecadfdb76dac67c0ab64ce2f..64131243907a7fc580fa1aee7c3364ff92581c83 100644 GIT binary patch literal 62976 zcmc${34D~*^*4T=XZFcD$z%^>=+O+VNsB<2)F<$1QHbu3?xCp$80x#ymH z?!D)p=RWt|8D=fIS{x$c#OL5ak;jqpuTJ4NgHB|p4t^q4w)h=hQLkcy-$Zd!JeLHqS@De}SRpF@^jL{a|hPi>Mc{LO>j zIYglMCU(T3e|3f=gSRxvkOhb4eG?rL@h0SZK~GPhYucOFwS&HIKLGNyt+w5u^e=>J zYg*e{mxEHo8n3t<5bF2+~%8&DsYC;u2O`Co*{;N91DmEB>{je+yJKQiT(;0A9xoQVPEY;;obwJRMm+u z!<(BEhDrVmuZo8&flG!rT!l0Y`zt|MD&jdc%oz@lA_Z5RjSeWw_T5pIqs8wi%XN3K zA>k1Kca-I|jz{fxl;wNw2*Vm!36;*sD4=b>hZ$wQ$ZJTX%(4us-R@rZXl9QAh`@G# zS+%n~Sm_GG=iO!1?()`Sp)&G27K@BSe!11(P)|1xwEY1&es}mNWX0Bl=gx|)W70t) zL&E6vN{a}?IKMR>rm#HxA<*__Lix+A@|S9P5-5*KP@cqq@)#b5oq(8~90{vI=tVb* zKyPJ|2VUg1ytQHor05kDe!39+!HO4P!C%_YM{Yk|Wt@b;az~Daol-HxcHfHp4Y@2^ zWOizrzah^iHJy;HYzYTxPzC+}AE?7i-C~9(LYLni48zFEFgR`r!-L(yUPqE={Jjvg z=m*cq}$+B{<2QygzJEIqFUz$ zg4Q0o8*KM?qPVjnbA(g=g30Hjue^<-ezzlbHF6UBaTf&aezbl19aeIfPrnClvNyw_ z9>N(v{!EtiaSCU;0c!rR9Us7ys|9x9$ecUr7eB) zq-`<`H^UhG%J5X6Qfq#@LesR+OQ`Z&)O4H{y6M{$I-Z3p&-@nEOxF@)zD0={TEc`A zR)!NARG?kg`fH4IVuz`;NW~&C(~RD1C#Fy21ZW6np`ST%8Rv`9O25wg$V^}%C;ZKy zA%}~XWAediP>>i#L{+E`#vb@}pzU37m?B`{VQMiH0RvA}i=hY@gW?QDz`&Ezl28N;JX$S=B4C8#3`M{| zS6C8?fH5S_Py~#UI71O_`x3OBe`bzai-a~Jp=C&D4-#5o>XR{}7sXhi z+4>g7FUG3OHmoN6F;)_fnOavZ>Pcol&qg--c@CxK0=UiCiA=I$^O$syhwjF>qPt0i z7XV=Hn*!@3h2xzeX%aq(c_&-aryxnH6c3+A4*4m`^aWmba;11NFRYmBkwC5#B0d?^I~;m3 zHP|1$SyYKhfTR*SLAE|Zoe9Bx4+5hqvvm0+DJWUg#b+hv9~9xA8OCr{Vk9vlc*5G% zW6kH3#gNIMOcPTLtkQpD%Zc3-(70x!g1?@97id3@G9dczx8 z3TBeE;`7=}Pq-1xOedZ#SX~)#nAJbNP({1`V_X&j%RcsxZQ|VTkyv=$6FurTFN$Jprkm zVd3#L237^^x1-<=y2dz!k11mD%j1h>EH}=CXr)h58mh zh$2`YT5(1ZwZ|bpM2hlQKUF)jD}9d0IVhUlYx>>euS6CW+mUm@Nvd4wiL?MoMkmyx zvEIn{0V69_+Q70VE0OPwtU`uV9yK^OVI|`*`{tw5Dj#3P=wu3Q!344wE}lpP3aT&L zgY}=sV-IWpdqYUp-y9zwm%ukA*BT$1=E#u9YLrINqor*Puw<`0j7DSmh8il%U*
Uw7GshX+rWhDYz9vlWUaIP;ZATc)T;Y9 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 diff --git a/Projects/SystemX.Core/SystemX.Core/Services/CommonService.cs b/Projects/SystemX.Core/SystemX.Core/Services/CommonService.cs new file mode 100644 index 0000000..c108ac8 --- /dev/null +++ b/Projects/SystemX.Core/SystemX.Core/Services/CommonService.cs @@ -0,0 +1,16 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace SystemX.Core.Services +{ + public class CommonService + { + public CommonService() + { + } + + }//end class +} diff --git a/Projects/SystemX.Core/SystemX.Core/Services/HttpService.cs b/Projects/SystemX.Core/SystemX.Core/Services/HttpService.cs new file mode 100644 index 0000000..7aa7cb0 --- /dev/null +++ b/Projects/SystemX.Core/SystemX.Core/Services/HttpService.cs @@ -0,0 +1,163 @@ +using Azure.Core; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.Http.Json; +using System.Text; +using System.Threading.Tasks; + +namespace SystemX.Core.Services +{ + public class HttpService : CommonService + { + public HttpService() + : base() + { + } + + /// + /// PostJsonAsync + /// + /// https://127.0.0.1:443 + /// Range 5~30 secconds + public virtual async Task PostJsonAsync(string url, REQUEST request, short timeOutSeconds = 5) where REQUEST : class where RESPONSE : class + { + RESPONSE? response = default(RESPONSE); + Guid guid = Guid.NewGuid(); + + using (HttpClient httpClient = new HttpClient(GetClientHandler())) + { + int retry = 0; + while (true) + { + await Task.Delay(1); + try + { + var timeOutSec = SetTimeout(timeOutSeconds); + httpClient.Timeout = new TimeSpan(0, 0, timeOutSec); + httpClient.BaseAddress = new Uri($"{url}"); + + LogXnet.WriteLine($"[POST] Request({guid})::{url}{Environment.NewLine}{request?.ToJson()}", LogXLabel.HTTP); + + DateTime requestTime = DateTime.Now; + var res = await httpClient.PostAsJsonAsync(url, request); + response = await res.Content.ReadFromJsonAsync(); + + LogXnet.WriteLine($"[POST] 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; + } + + /// + /// GetJsonAsnyc + /// + /// https://127.0.0.1:443 + /// Range 5~30 secconds + public virtual async Task GetJsonAsync(string url, short timeOutSeconds = 10) where RESPONSE : class + { + RESPONSE? response = default(RESPONSE); + Guid guid = Guid.NewGuid(); + + using (HttpClient httpClient = new HttpClient(GetClientHandler())) + { + try + { + var timeOutSec = SetTimeout(timeOutSeconds); + httpClient.Timeout = new TimeSpan(0, 0, timeOutSec); + httpClient.BaseAddress = new Uri($"{url}"); + + LogXnet.WriteLine($"[GET] Request({guid})::{url}", LogXLabel.HTTP); + + DateTime requestTime = DateTime.Now; + response = await httpClient.GetFromJsonAsync(url); + + LogXnet.WriteLine($"[GET] Rseponse({guid}) ({(DateTime.Now - requestTime).TotalSeconds} sec)::{url}", LogXLabel.HTTP); + } + catch (Exception e) + { + LogXnet.WriteLine(e); + } + } + + return response; + } + + /// + /// PutJsonAsnyc + /// + /// https://127.0.0.1:443 + /// Range 5~30 secconds + public virtual async Task PutJsonAsync(string url, REQUEST request, short timeOutSeconds = 5) where REQUEST : class where RESPONSE : class + { + RESPONSE? response = default(RESPONSE); + Guid guid = Guid.NewGuid(); + + using (HttpClient httpClient = new HttpClient(GetClientHandler())) + { + int retry = 0; + while (true) + { + await Task.Delay(1); + try + { + var timeOutSec = SetTimeout(timeOutSeconds); + httpClient.Timeout = new TimeSpan(0, 0, timeOutSec); + httpClient.BaseAddress = new Uri($"{url}"); + + 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; + } + + protected HttpClientHandler GetClientHandler() + { + HttpClientHandler clientHandler = new HttpClientHandler(); + clientHandler.ServerCertificateCustomValidationCallback = (message, cert, chain, sslPolicyErrors) => + { + return true; + }; + + return clientHandler; + } + + protected short SetTimeout(short timeOutSeconds) + { + short timeoutMin = 5; + short timeoutMax = 30; + + timeOutSeconds = Math.Clamp(timeOutSeconds, timeoutMin, timeoutMax); + + return timeOutSeconds; + } + } +}