Fix chiamate httpclient al posto di webclient x GWMS (da ri-testare in generale)

This commit is contained in:
Samuele Locatelli
2026-03-13 09:32:43 +01:00
parent 538015d73a
commit 1b36765ae3
7 changed files with 141 additions and 33 deletions
+123 -17
View File
@@ -258,7 +258,7 @@ namespace IOB_UT_NEXT
// controllo se ho un VETO all'invio...
if (dtVetoSend < DateTime.Now)
{
answ = callUrlNow(URL);
answ = CallUrlGet(URL);
}
return answ;
}
@@ -275,7 +275,7 @@ namespace IOB_UT_NEXT
// controllo se ho un VETO all'invio...
if (dtVetoSend < DateTime.Now)
{
answ = callUrlNow(URL, payload);
answ = CallUrlPost(URL, payload);
}
// restituisco valore!
return answ;
@@ -351,20 +351,16 @@ namespace IOB_UT_NEXT
}
}
#if false
/// <summary>
/// Effettua chiamata URL IMMEDIATAMENTE e restituisce risultato
/// Effettua chiamata URL IMMEDIATAMENTE e restituisce risultato LEGACY
/// </summary>
/// <param name="URL"></param>
/// <returns></returns>
[Obsolete("Obsoleto passare a CallUrlGet")]
public static string callUrlNow(string URL)
{
string answ = "";
#if false
if (client == null)
{
client = new WebClientWT();
}
#endif
using (WebClient client = new WebClient())
{
client.Headers.Add("user-agent", CRS("appName"));
@@ -394,27 +390,75 @@ namespace IOB_UT_NEXT
}
// restituisco valore!
return answ;
}
#endif
/// <summary>
/// Effettua chiamata URL IMMEDIATAMENTE e restituisce risultato
/// </summary>
/// <param name="URL"></param>
/// <returns></returns>
public static string CallUrlGet(string URL)
{
try
{
// Gestione certificati self-signed
HttpClientHandler handler = new HttpClientHandler();
if (URL.Contains("10.74.82."))
{
handler.ServerCertificateCustomValidationCallback =
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
}
using (var client = new HttpClient(handler))
{
// Timeout personalizzabile
client.Timeout = TimeSpan.FromMilliseconds(5000);
// Header custom
client.DefaultRequestHeaders.UserAgent.ParseAdd(CRS("appName"));
// GET sincrona
var response = client.GetAsync(URL).Result;
string answ = response.Content.ReadAsStringAsync().Result;
return answ;
}
}
catch (Exception exc)
{
int pauseSendMSec = nextPauseSendMSec;
dtVetoSend = DateTime.Now.AddMilliseconds(pauseSendMSec);
if (logValuePermit(URL))
{
lg.Error($"CallUrlGet | Errore chiamando {URL} | wait {pauseSendMSec} ms{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}");
}
return "";
}
}
#if false
/// <summary>
/// Effettua chiamata IMMEDIATAMENTE URL e restituisce risultato
/// </summary>
/// <param name="URL"></param>
/// <param name="payload"></param>
/// <returns></returns>
[Obsolete("Obsoleto passare a CallUrlGet")]
public static string callUrlNow(string URL, string payload)
{
string answ = "";
#if false
if (clientPayload == null)
{
clientPayload = new WebClientWT();
}
#endif
using (WebClient clientPayload = new WebClient())
{
clientPayload.Headers.Add("user-agent", $"{CRS("appName")}-PAYLOAD");
clientPayload.Headers.Add("Content-ContextType", "application/json");
clientPayload.Encoding = Encoding.UTF8;
//clientPayload.Headers.Add("Content-ContextType", "application/json");
clientPayload.Headers.Add(HttpRequestHeader.ContentType, "application/json; charset=utf-8");
try
{
// problema certificati locali...
@@ -424,7 +468,7 @@ namespace IOB_UT_NEXT
{
System.Net.ServicePointManager.ServerCertificateValidationCallback = (senderX, certificate, chain, sslPolicyErrors) => { return true; };
}
answ = clientPayload.UploadString(URL, payload);
answ = clientPayload.UploadString(URL, "POST", payload);
if (answ != "OK")
{
// controllo log permesso...
@@ -447,9 +491,71 @@ namespace IOB_UT_NEXT
}
}
// restituisco valore!
return answ;
}
#endif
/// <summary>
/// Effettua chiamata IMMEDIATAMENTE URL e restituisce risultato
/// </summary>
/// <param name="URL"></param>
/// <param name="payload"></param>
/// <returns></returns>
public static string CallUrlPost(string URL, string payload)
{
string answ = "";
try
{
// Gestione certificati self-signed
HttpClientHandler handler = new HttpClientHandler();
if (URL.Contains("10.74."))
{
handler.ServerCertificateCustomValidationCallback =
HttpClientHandler.DangerousAcceptAnyServerCertificateValidator;
}
using (var client = new HttpClient(handler))
{
// Timeout personalizzabile
client.Timeout = TimeSpan.FromMilliseconds(5000);
// Header custom
client.DefaultRequestHeaders.UserAgent.ParseAdd($"{CRS("appName")}-PAYLOAD");
// Corpo JSON
var content = new StringContent(payload, Encoding.UTF8, "application/json");
// POST sincrono
var response = client.PostAsync(URL, content).Result;
answ = response.Content.ReadAsStringAsync().Result;
// Log identico al tuo
if (answ != "OK")
{
if (logValuePermit($"{URL}|[{answ}]"))
{
lg.Error($"CallUrlPost | POST fallito | ans: [{answ}]:{Environment.NewLine}- URL{Environment.NewLine}{URL}{Environment.NewLine}- payload{Environment.NewLine}{payload}");
}
}
}
}
catch (Exception exc)
{
int pauseSendMSec = nextPauseSendMSec;
dtVetoSend = DateTime.Now.AddMilliseconds(pauseSendMSec);
if (logValuePermit(URL))
{
lg.Error($"CallUrlPost | Errore chiamando {URL} | wait {pauseSendMSec} ms | Dump Payload:{Environment.NewLine}{payload}{Environment.NewLine}Eccezione:{Environment.NewLine}{exc}");
}
}
return answ;
}
/// <summary>
/// Test esistenza/creazione directory
/// </summary>
+10 -8
View File
@@ -1682,7 +1682,7 @@ namespace IOB_WIN_FORM.Iob
{
lgInfo("chiamata URL " + url2call);
}
var rawData = utils.callUrlNow(url2call);
var rawData = utils.CallUrlGet(url2call);
// deserializzo e recupero KVP...
var dictArtSrv = JsonConvert.DeserializeObject<Dictionary<string, string>>(rawData);
// se fosse una chiamata con valore vuoto --> salvo intera tabella...
@@ -1729,7 +1729,7 @@ namespace IOB_WIN_FORM.Iob
lgInfo("chiamata URL " + url2call);
}
// è direttamente il risultato!
answ = utils.callUrlNow(url2call);
answ = utils.CallUrlGet(url2call);
}
// restituisco
return answ;
@@ -1747,11 +1747,11 @@ namespace IOB_WIN_FORM.Iob
{
lgInfo("chiamata URL " + url2call);
}
answ = utils.callUrlNow(url2call);
answ = utils.CallUrlGet(url2call);
// se vuoto faccio seconda prova...
if (string.IsNullOrEmpty(answ) || answ == "[]")
{
answ = utils.callUrlNow(url2call);
answ = utils.CallUrlGet(url2call);
}
return answ;
}
@@ -4294,7 +4294,7 @@ namespace IOB_WIN_FORM.Iob
numIncr = delta > maxSendPzCountBlock + minSendPzCountBlock ? maxSendPzCountBlock : delta - minSendPzCountBlock;
// invio il num max di pezzi ammesso in blocco!
lastUrl = $"{urlAddPzCount}{numIncr}".Replace(IOBConfFull.General.CodIOB, fullCode);
string resp = utils.callUrlNow(lastUrl);
string resp = utils.CallUrlGet(lastUrl);
if (!string.IsNullOrEmpty(resp))
{
// dalla risposta (come numero) capisco SE ha aggiunto i pezzi (e quanti)
@@ -4368,7 +4368,7 @@ namespace IOB_WIN_FORM.Iob
numIncr = delta > maxSendPzCountBlock + minSendPzCountBlock ? maxSendPzCountBlock : delta - minSendPzCountBlock;
// invio il num max di pezzi ammesso in blocco!
lastUrl = $"{urlAddPzCount}{numIncr}";
string resp = utils.callUrlNow(lastUrl);
string resp = utils.CallUrlGet(lastUrl);
if (!string.IsNullOrEmpty(resp))
{
// dalla risposta (come numero) capisco SE ha aggiunto i pezzi (e quanti)
@@ -5294,7 +5294,8 @@ namespace IOB_WIN_FORM.Iob
lgInfo($"Chiamata di plcWriteParams da processMem2Write: {updatedPar.Count} updatedPar");
plcWriteParams(ref updatedPar);
// invio su cloud parametri!
utils.callUrl($"{urlUpdateWriteParams}", JsonConvert.SerializeObject(updatedPar));
string rawData = JsonConvert.SerializeObject(updatedPar);
utils.CallUrlPost($"{urlUpdateWriteParams}", rawData);
lgInfo($"Notificato a server scrittura {updatedPar.Count} parametri");
}
else
@@ -5303,7 +5304,8 @@ namespace IOB_WIN_FORM.Iob
if (currWritePar.Count > 0 && (lastWriteParamsUpsert.AddMinutes(vetoSendWriteUpsert) < adesso))
{
// invio su cloud parametri!
var res = utils.callUrl($"{urlUpdateWriteParams}", JsonConvert.SerializeObject(currWritePar));
string rawData = JsonConvert.SerializeObject(currWritePar);
var res = utils.CallUrlPost($"{urlUpdateWriteParams}", rawData);
lgInfo($"Reinviato a server stato {updatedPar.Count} parametri WRITE");
lastWriteParamsUpsert = adesso;
}
+1 -1
View File
@@ -3356,7 +3356,7 @@ namespace IOB_WIN_FORM.Iob
}
string rawData = JsonConvert.SerializeObject(ActiveAlarmList);
string resp = utils.callUrlNow(lastUrl, rawData);
string resp = utils.CallUrlPost(lastUrl, rawData);
//string resp = utils.callUrlAsync(lastUrl, rawData);
if (resp != null)
{
+1 -1
View File
@@ -904,7 +904,7 @@ namespace IOB_WIN_FORM
// invio in locale!
url2call = $"{urlDownloadFile}{currIob}";
}
rawData = utils.callUrlNow(url2call);
rawData = utils.CallUrlGet(url2call);
if (!string.IsNullOrEmpty(rawData))
{
// deserializzo
+2 -2
View File
@@ -231,7 +231,7 @@
"tipoMem": "Real",
"index": 152,
"size": 4,
"func": "MEDIAN",
"func": "POINT",
"period": 60,
"factor": 1,
"unit": "C"
@@ -243,7 +243,7 @@
"tipoMem": "Real",
"index": 156,
"size": 4,
"func": "MEDIAN",
"func": "POINT",
"period": 60,
"factor": 1,
"unit": "C"
+1 -1
View File
@@ -198,7 +198,7 @@ namespace IOB_WIN_SIEMENS.IobSiemens
{
try
{
currODL = utils.callUrlNow(urlGetCurrODL);
currODL = utils.CallUrlGet(urlGetCurrODL);
#if false
// se nullo riprovo...
if (string.IsNullOrEmpty(currODL))
+3 -3
View File
@@ -399,7 +399,7 @@ namespace IOB_WIN_SIEMENS.IobSiemens
if (DateTime.Now >= lastPzCountSend.AddMilliseconds(pzCountDelay))
{
// Salvo il contapezzi della macchina
retVal = utils.callUrlNow(urlSetPzCountMAC + contapezziPLC.ToString());
retVal = utils.CallUrlGet(urlSetPzCountMAC + contapezziPLC.ToString());
// verifica se tutto OK, ovvero conferma i pezzi inviati
if (retVal != contapezziPLC.ToString())
{
@@ -427,7 +427,7 @@ namespace IOB_WIN_SIEMENS.IobSiemens
}
// Salvo il contapezzi della macchina
retVal = utils.callUrlNow(urlSetPzCount + contapezziIOB.ToString());
retVal = utils.CallUrlGet(urlSetPzCount + contapezziIOB.ToString());
// verifica se tutto OK, ovvero conferma i pezzi inviati
if (retVal != contapezziIOB.ToString())
{
@@ -444,7 +444,7 @@ namespace IOB_WIN_SIEMENS.IobSiemens
}
// invio a server contapezzi (aggiornato)
retVal = utils.callUrlNow(urlSetPzCount + contapezziIOB.ToString());
retVal = utils.CallUrlGet(urlSetPzCount + contapezziIOB.ToString());
// verifica se tutto OK
if (retVal != contapezziIOB.ToString())
{