この記事はMarco CantuによるRAD Studio 10.3.1 HTTP and SOAP Clients Enhancementsの抄訳です。
Embarcaderoは RAD Studio 10.3 で、SOAPクライアント実装をすべてのプラットフォームでHTTPクライアントライブラリを利用する実装に変更しました。これはモバイルプラットフォーム向けのアーキテクチャ(Indy ベース)でのHTTPSサポートにおける問題を考慮したものです。Windows向けではネイティブ実装されていましたが、古いWindows HTTPクライアントライブラリを用いていました。
しかし10.3での変更内容は非互換性の問題を生じるため、10.3.1で方向性を変更しました。これはインタフェースを崩す機能ではないと考えられるため、いくつかのケースでは元のコードを変更するかわりにクラスヘルパーを追加しました。
証明書の管理
10.3の最大の変更点は、THTTPReqResp実装がTHTTPClientクラスを使用して置き換えられたことです。このクラスは、少し異なるインタフェースと一連の機能で証明書をサポートします。
今回のリリースである 10.3.1では、System.Net.HttpClient.Win.pasユニットに対し、いくつかの実装上の変更を行っています。詳細は次のとおりです。
- 証明書管理を容易にするために、THTTPReqRespクラスのClientCertificateプロパティ向けにIDEに新しいプロパティエディタが追加されました – 下記の画像を参照してください。
- Soap.SOAPHTTPTransユニットのメソッドTHTTPReqResp.DoNeedClientCertificateには処理がありません – これがTHTTPReqResp での 10.3 における新しい OnNeedClientCertificateイベントの基底メソッドであることに注意してください。これは動作をカスタマイズする目的に使用できます。
- ユニットSoap.Win.CertHelper.pasのソースコードがsourceフォルダに追加されました(フォルダ C:Program Files (x86)EmbarcaderoStudio20.0sourcesoap)
今回の変更点や改善点には Quality portal でレポートされた問題、RSP-23195, RSP-23177, RSP-23344, RSP-23076. RSP-23225 を含みます。これは、Windowsプラットフォーム機能にフックする新しいプロパティエディタです。
HTTP 圧縮の展開をサポート
HTTPクライアントおよびSOAPクライアントを 10.3 と 10.3.1 で比較した場合の2番目の重要な機能強化は、HTTPクライアントライブラリでのHTTP圧縮の展開機能のサポートです。System.Net.HttpClientに新しい型が追加されました。
THTTPCompressionMethod = (Deflate, GZip, Brotli, Any);
THTTPCompressionMethods = set of THTTPCompressionMethod;
この機能は、レスポンスを処理する際の自動的な展開を制御する、いくつかの関連クラスの新しいランタイムプロパティとして利用できます。
THTTPClient.AutomaticDecompression
TNewHTTPClient.AutomaticDecompression
THTTPReqResp.AutomaticDecompression
このプロパティを設定すると、対応する “Accept-Encoding” ヘッダーがリクエストに含まれ、展開されたレスポンスが自動的に取得できます。実際の実装はプラットフォームに依存し、現在はWindowsとLinuxでサポートされています。iOS、macOS、およびAndroidプラットフォームでは、HTTP圧縮されたレスポンスの展開はオペレーティングシステムによって自動的に行われます。