From 24b96b7daa48ea30f4887364fb9eb957fa0d0264 Mon Sep 17 00:00:00 2001 From: ddemeyer Date: Thu, 19 Mar 2026 17:01:31 +0100 Subject: [PATCH] #232 HttpClient request and response compression handling --- .../InfoShareWcfSoapWithOpenIdConnectConnection.cs | 13 +++++++++++++ .../InfoShareWcfSoapWithWsTrustConnection.cs | 13 +++++++++++++ .../Trisoft.ISHRemote/Objects/Public/IshSession.cs | 14 ++++++++++++++ 3 files changed, 40 insertions(+) diff --git a/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithOpenIdConnectConnection.cs b/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithOpenIdConnectConnection.cs index b2818e2..731fee5 100644 --- a/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithOpenIdConnectConnection.cs +++ b/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithOpenIdConnectConnection.cs @@ -1726,7 +1726,20 @@ private XDocument LoadConnectionConfiguration() handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; } handler.SslProtocols = (System.Security.Authentication.SslProtocols)(SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13); +#if NET48 + handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; +#else + handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate | DecompressionMethods.Brotli; +#endif var httpClient = new HttpClient(handler); +#if NET48 + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip"); + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("deflate"); +#else + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip"); + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("deflate"); + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("br"); +#endif httpClient.Timeout = _connectionParameters.Timeout; var connectionConfigurationUri = new Uri(InfoShareWSBaseUri, "connectionconfiguration.xml"); _logger.WriteDebug($"LoadConnectionConfiguration uri[{connectionConfigurationUri}] timeout[{httpClient.Timeout}]"); diff --git a/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithWsTrustConnection.cs b/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithWsTrustConnection.cs index fff726e..26d2a3e 100644 --- a/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithWsTrustConnection.cs +++ b/Source/ISHRemote/Trisoft.ISHRemote/Connection/InfoShareWcfSoapWithWsTrustConnection.cs @@ -1368,7 +1368,20 @@ private XDocument LoadConnectionConfiguration() handler.ServerCertificateCustomValidationCallback = HttpClientHandler.DangerousAcceptAnyServerCertificateValidator; } handler.SslProtocols = (System.Security.Authentication.SslProtocols)(SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13); +#if NET48 + handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; +#else + handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate | DecompressionMethods.Brotli; +#endif var httpClient = new HttpClient(handler); +#if NET48 + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip"); + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("deflate"); +#else + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip"); + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("deflate"); + httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("br"); +#endif httpClient.Timeout = _connectionParameters.Timeout; var connectionConfigurationUri = new Uri(InfoShareWSBaseUri, "connectionconfiguration.xml"); _logger.WriteDebug($"LoadConnectionConfiguration uri[{connectionConfigurationUri}] timeout[{httpClient.Timeout}]"); diff --git a/Source/ISHRemote/Trisoft.ISHRemote/Objects/Public/IshSession.cs b/Source/ISHRemote/Trisoft.ISHRemote/Objects/Public/IshSession.cs index b58f3cd..83d9886 100644 --- a/Source/ISHRemote/Trisoft.ISHRemote/Objects/Public/IshSession.cs +++ b/Source/ISHRemote/Trisoft.ISHRemote/Objects/Public/IshSession.cs @@ -138,10 +138,24 @@ public IshSession(ILogger logger, string webServicesBaseUrl, string ishUserName, } ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13; handler.SslProtocols = (System.Security.Authentication.SslProtocols)(SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12 | SecurityProtocolType.Tls13); +#if NET48 + handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; +#else + handler.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate | DecompressionMethods.Brotli; +#endif + _httpClient = new HttpClient(handler) { Timeout = _timeout }; +#if NET48 + _httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip"); + _httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("deflate"); +#else + _httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip"); + _httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("deflate"); + _httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("br"); +#endif // webServicesBaseUrl should have trailing slash, otherwise .NET throws unhandy "Reference to undeclared entity 'raquo'." error _webServicesBaseUri = (webServicesBaseUrl.EndsWith("/")) ? new Uri(webServicesBaseUrl) : new Uri(webServicesBaseUrl + "/"); _ishUserName = ishUserName == null ? Environment.UserName : ishUserName;