The new features for the HTTP client library offer more flexibility and options in terms of protocol and standards support.
Table of Contents
Better Secure Protocols Support
The first change is the improved support for security protocols. In the past it wasn’t possible to specify the required security protocols (TLS1.1, TLS1.2, etc.) for an HTTP request. We have added a new enumeration, THTTPSecureProtocol with the values (SSL2, SSL3, TLS1, TLS11, TLS12). THPPTClient and related classes have now a SecureProtocols property which is a set based on that enumeration.
The property (available only at run-time) controls which security protocols to use and it is currently implemented only for Windows. This was requested in our Quality Portal at https://quality.embarcadero.com/browse/RSP-18713
HTTP Redirect Improvements
Another set of improvements is in the way the HTTP client library handles redirects. There is a new RedirectsWithGET runtime property offering another set of options, this time based on the following enumeration:
THTTPRedirectWithGET = (Post301, Post302, Post303, Post307, Post308, Put301, Put302, Put303, Put307, Put308, Delete301, Delete302, Delete303, Delete307, Delete308);
The property controls which request method and response status must be redirected using GET method and it was reported in several entries in QP, including https://quality.embarcadero.com/browse/RSP-14671.
New REST Client Events OnNeedClientCert and OnAuthEvent
These events corresponds to their HTTPClient counterparts and are now surfaces at a higher level:
TRESTClient.OnNeedClientCertificate: TNeedClientCertificateEvent TRESTClient.OnAuthEvent: TCredentialAuthEvent
This was requested in https://quality.embarcadero.com/browse/RSP-15857
MIME Name Helper
We added a function that to the TEncoding support, which returns the encoding MIME for a speficied encoding:
function GetEncodingMimeName(AEncoding: TEncoding): string;
Changed TIniFile Behaviour
This one is totally unrelated, beside the fact it was also done in 10.2.2. The Ini File behavior was platform specific, not is it platform independent. On Windows, TIniFile ReadString ignores the case of Key parameter. On Linux, the ReadString call was case sensitive, leading to issues when migrating code and configuration files. Now by default TIniFile content structure (not the actual values) is treated in a case-insensitive way on all supported platforms.