IXMLHTTPRequest3
COM公式ドキュメント
HTTP リクエストの構成と送信に必要なメソッドとプロパティを提供し、HTTP レスポンス処理中の通知をコールバックで受け取れるようにします。
解説(Remarks)
IXMLHTTPRequest3 インターフェイスは、HTTP リクエストを構成して送信し、HTTP レスポンスの処理中にコールバックで通知を受け取ります。IXMLHTTPRequest3 インターフェイスにより、アプリはマルチスレッド アパートメント (MTA) で実行できます。これは Windows ランタイム (WinRT) 上で実行するための要件です。
IXMLHTTPRequest3 インターフェイスは IXMLHTTPRequest2 インターフェイスを拡張したものです。
IXMLHTTPRequest3 および IXMLHTTPRequest3Callback インターフェイスは、IXMLHTTPRequest2 および IXMLHTTPRequest2Callback インターフェイスの機能を次の点で拡張します。
- IXMLHTTPRequest3 インターフェイスの SetClientCertificate メソッドにより、HTTPS リクエストで使用するクライアント証明書を設定できます。
- IXMLHTTPRequest3Callback インターフェイスの OnClientCertificateRequested メソッドにより、次の HTTP リクエストで使用可能なクライアント証明書をフィルターで絞り込むための発行者リストを取得できます。
- 本来であれば HTTPS 接続を中止させる特定の証明書エラーを無視できます。
- IXMLHTTPRequest3Callback インターフェイスの OnServerCertificateReceived メソッドにより、HTTPS レスポンスから証明書エラーとサーバー証明書チェーンを取得できます。
IXMLHTTPRequest2 インターフェイスの SetProperty メソッドは、IXMLHTTPRequest3 インターフェイスにおいて、新しいシナリオをサポートする次の新しいプロパティで拡張されています。
- XHR_PROP_NO_CACHE – HTTP リクエストに対するキャッシュの読み取りと書き込みを抑止します。
- XHR_PROP_EXTENDED_ERROR – 失敗した場合に、基になる Win32 エラー コードを含む HRESULT を HTTP スタックが OnError メソッドへ渡すようにします。
- XHR_PROP_QUERY_STRING_UTF8 – HTTP リクエストのクエリ文字列を ACP ではなく UTF-8 でエンコードするようにします。
- XHR_PROP_IGNORE_CERT_ERRORS – 特定のサーバー証明書エラーを抑止します。
メソッド 1
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Open メソッドで指定した URL に対する認証に使用するクライアント証明書を設定します。
| cbClientCertificateHash | DWORD | in | pbClientCertHash パラメーターのバイト数。 |
| pbClientCertificateHash | BYTE* | in | HTTPS リクエストに設定するクライアント証明書全体に対して計算されたサムプリント (拇印) またはハッシュ。 |
| pwszPin | LPWSTR | in | このパラメーターは予約されています。 |
戻り値
成功した場合は S_OK を返します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IXMLHTTPRequest3 "{A1C9FEEE-0617-4F23-9D58-8961EA43567C}" #usecom global IXMLHTTPRequest3 IID_IXMLHTTPRequest3 "{ED8C108E-4349-11D2-91A4-00C04F7969E8}" #comfunc global IXMLHTTPRequest3_SetClientCertificate 13 int,var,wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IXMLHTTPRequest3 "{A1C9FEEE-0617-4F23-9D58-8961EA43567C}" #usecom global IXMLHTTPRequest3 IID_IXMLHTTPRequest3 "{ED8C108E-4349-11D2-91A4-00C04F7969E8}" #comfunc global IXMLHTTPRequest3_SetClientCertificate 13 int,sptr,wstr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。