In RAD Studio 10.3, Embarcadero moved the SOAP client implementation to the HTTP client library for all platforms, given the issues support HTTPS with the previous architecture (based on Indy) on mobile platforms. On Windows, there was already a native implementation, but based on an older Windows HTTP client library. 

This change caused some incompatibilities, we have started addressing in 10.3.1 -- considering this is a non-interface breaking features, so we added class helpers rather than changing the original code in some cases.

Managing Certificates

The biggest change in 10.3 was that the THTTPReqResp implementation was replaced using the THTTPClient class, which offers certificates support with a slightly different interface and set of features. Now in 10.3.1 there are several implementation changes in the System.Net.HttpClient.Win.pas unit. Here are more details:

  • To simplify certificates management, there is now a new property editor in the IDE for the THTTPReqResp class ClientCertificate property -- see image below
  • The method THTTPReqResp.DoNeedClientCertificate of the Soap.SOAPHTTPTrans  unit had missing instruction -- notice that this is the method underlying the new 10.3 OnNeedClientCertificate event of THTTPReqResp, you can use to customize the behavior
  • The source code of the unit Soap.Win.CertHelper.pas has been added to the source (in a folder like C:\Program Files (x86)\Embarcadero\Studio\20.0\source\soap)

Quality portal issues addressed by improvements in this area include RSP-23195, RSP-23177, RSP-23344, RSP-23076, and RSP-23225. Here is the new property editor, which hooks into Windows platform features

HTTP Decompression

The second significant enhancement in 10.3.1 compared to 10.3 for HTTP client and SOAP clients is the improved support for HTTP client library decompression. There are now new types in System.Net.HttpClient:

THTTPCompressionMethod = (Deflate, GZip, Brotli, Any);
THTTPCompressionMethods = set of THTTPCompressionMethod;

This feature is exposed in new runtime properties of a few related classes, which control automatic decompression of response body:

THTTPClient.AutomaticDecompression
TNewHTTPClient.AutomaticDecompression
THTTPReqResp.AutomaticDecompression

When this property is set, the corresponding "Accept-Encoding" header will be included into request, and response body will be automatically decoded. The actual implementation is platform dependent and currently supported on Windows and Linux. On iOS, macOS, and Android platforms decoding is performed automatically by the operating system.

Enjoy RAD Studio 10.3.1

That's all for now. If you missed an overview of what's in 10.3.1, read David's summary at https://community.idera.com/developer-tools/b/blog/posts/key-improvements-in-rad-studio-10-3-1