HttpOpenRequestA 関数 (wininet.h)

HTTP 要求ハンドルを作成します。

構文

HINTERNET HttpOpenRequestA(
  [in] HINTERNET hConnect,
  [in] LPCSTR    lpszVerb,
  [in] LPCSTR    lpszObjectName,
  [in] LPCSTR    lpszVersion,
  [in] LPCSTR    lpszReferrer,
  [in] LPCSTR    *lplpszAcceptTypes,
  [in] DWORD     dwFlags,
  [in] DWORD_PTR dwContext
);

パラメーター

[in] hConnect

InternetConnect によって返される HTTP セッションへのハンドル。

[in] lpszVerb

要求で使用する HTTP 動詞を含む null で終わる文字列へのポインター。 このパラメーターが NULL の場合、関数は HTTP 動詞として GET を使用します。

[in] lpszObjectName

指定した HTTP 動詞のターゲット オブジェクトの名前を含む null で終わる文字列へのポインター。 通常、これはファイル名、実行可能モジュール、または検索指定子です。

[in] lpszVersion

要求で使用する HTTP バージョンを含む null で終わる文字列へのポインター。 インターネット エクスプローラーの設定は、このパラメーターで指定された値をオーバーライドします。

このパラメーターが NULL の場合、インターネット エクスプローラー設定の値に応じて、関数は HTTP バージョン 1.1 または 1.0 を使用します。

説明
HTTP/1.0
HTTP バージョン 1.0
HTTP/1.1
HTTP バージョン 1.1

[in] lpszReferrer

要求の URL (lpszObjectName) が取得されたドキュメントの URL を指定する null で終わる文字列へのポインター。 このパラメーターが NULL の場合、参照元は指定されません。

[in] lplpszAcceptTypes

クライアントによって受け入れられるメディアの種類を示す文字列の null で終わる配列へのポインター。 次に例を示します。

PCTSTR rgpszAcceptTypes[] = {_T("text/*"), NULL};

NULL ポインターを使用して配列を適切に終了しないと、クラッシュが発生します。

このパラメーターが NULL の場合、クライアントで受け入れられる型はありません。 一般に、サーバーは受け入れ型の欠如を解釈して、クライアントが "text/*" 型のドキュメントのみを受け入れることを示します (つまり、画像やその他のバイナリ ファイルは含まないテキスト ドキュメントのみ)。

[in] dwFlags

インターネット オプション。 このパラメーターには、次のいずれかの値を指定できます。

説明
INTERNET_FLAG_CACHE_IF_NET_FAIL
ERROR_INTERNET_CONNECTION_RESET (サーバーとの接続がリセットされました) またはERROR_INTERNET_CANNOT_CONNECT (サーバーへの接続試行が失敗した) によってリソースのネットワーク要求が失敗した場合に、キャッシュからリソースを返します。
INTERNET_FLAG_HYPERLINK
ネットワークからアイテムを再読み込みするかどうかを判断するときに、有効期限時間がなく、LastModified 時刻がサーバーから返されなかった場合に、強制的に再読み込みを行います。
INTERNET_FLAG_IGNORE_CERT_CN_INVALID
要求で指定されたホスト名に対してサーバーから返される SSL/PCT ベースの証明書のチェックを無効にします。 WinINet 関数では、ホスト名と単純なワイルドカード規則の照合を比較することで、証明書に対して単純なチェックを使用します。
INTERNET_FLAG_IGNORE_CERT_DATE_INVALID
SSL/PCT ベースの証明書の適切な有効期限のチェックを無効にします。
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTP
この特殊な種類のリダイレクトの検出を無効にします。 このフラグを使用すると、WinINet 関数は透過的に HTTPS から HTTP URL へのリダイレクトを許可します。
INTERNET_FLAG_IGNORE_REDIRECT_TO_HTTPS
この特殊な種類のリダイレクトの検出を無効にします。 このフラグを使用すると、WinINet 関数は透過的に HTTP から HTTPS URL へのリダイレクトを許可します。
INTERNET_FLAG_KEEP_CONNECTION
接続にキープアライブ セマンティクス (使用可能な場合) を使用します。 このフラグは、Microsoft Network (MSN)、NT LAN Manager (NTLM)、およびその他の種類の認証に必要です。
INTERNET_FLAG_NEED_FILE
ファイルをキャッシュできない場合は、一時ファイルを作成します。
INTERNET_FLAG_NO_AUTH
認証を自動的に試行しません。
INTERNET_FLAG_NO_AUTO_REDIRECT
HttpSendRequest でリダイレクトを自動的に処理しません。
INTERNET_FLAG_NO_CACHE_WRITE
返されたエンティティをキャッシュに追加しません。
INTERNET_FLAG_NO_COOKIES
要求に Cookie ヘッダーを自動的に追加せず、返された Cookie を Cookie データベースに自動的に追加しません。
INTERNET_FLAG_NO_UI
Cookie ダイアログ ボックスを無効にします。
INTERNET_FLAG_PRAGMA_NOCACHE
キャッシュされたコピーがプロキシ上に存在する場合でも、配信元サーバーによって要求が強制的に解決されるようにします。
INTERNET_FLAG_RELOAD
要求されたファイル、オブジェクト、またはディレクトリ リストをキャッシュからではなく元のサーバーからダウンロードします。
INTERNET_FLAG_RESYNCHRONIZE
前回のダウンロード以降にリソースが変更された場合は、HTTP リソースを再読み込みします。 すべての FTP リソースが再読み込みされます。

Windows XP および Windows Server 2003 R2 以前: Gopher リソースも再読み込みされます。

INTERNET_FLAG_SECURE
安全なトランザクション セマンティクスを使用します。 これは、Secure Sockets Layer/Private Communications Technology (SSL/PCT) の使用に変換され、HTTP 要求でのみ意味があります。

[in] dwContext

この操作を任意のアプリケーション データに関連付けるアプリケーション定義値を含む変数へのポインター。

戻り値

成功した場合は HTTP 要求ハンドルを返し、それ以外の場合は NULL を 返します。 拡張エラー情報を取得するには、 GetLastError を呼び出します。

解説

HttpOpenRequest 関数は、新しい HTTP 要求ハンドルを作成し、指定されたパラメーターをそのハンドルに格納します。 HTTP 要求ハンドルは、HTTP サーバーに送信される要求を保持し、要求の一部として送信されるすべての RFC822/MIME/HTTP ヘッダーを含みます。

"GET" または "POST" 以外の動詞が指定されている場合、 HttpOpenRequest は要求のINTERNET_FLAG_NO_CACHE_WRITEとINTERNET_FLAG_RELOADを自動的に設定します。

Microsoft Internet エクスプローラー 5 以降では、lpszVerb が "HEAD" に設定されている場合、HTTP/1.1 サーバーからの応答では Content-Length ヘッダーは無視されます。

Windows 7、Windows Server 2008 R2 以降では、lpszVersion パラメーターはインターネット エクスプローラー設定によってオーバーライドされます。 EnableHttp1_1は、システムのインターネット エクスプローラーで設定されたインターネット オプションによって制御される HKLM\Software\Microsoft\InternetExplorer\AdvacnedOptions\HTTP\GENABLE の下のレジストリ値です。 EnableHttp1_1値の既定値は 1 です。 HttpOpenRequest 関数は、EnableHttp1_1が 1 に設定されている場合、1.1 未満のすべての HTTP バージョン HTTP バージョン 1.1 にアップグレードします。

呼び出し元のアプリケーションで HttpOpenRequest によって返される HINTERNET ハンドルの使用が完了したら、InternetCloseHandle 関数を使用して閉じる必要があります。

メモ要求が非同期モードで送信された場合 (InternetOpendwFlags パラメーターはINTERNET_FLAG_ASYNCを指定します)、dwContext パラメーターが 0 (INTERNET_NO_CALLBACK) の場合、要求ハンドルで InternetSetStatusCallback を使用して設定されたコールバック関数は呼び出されませんが、呼び出しは非同期モードで実行されます。

WinINet API の他のすべての側面と同様に、この関数を DllMain またはグローバル オブジェクトのコンストラクターとデストラクター内から安全に呼び出すことはできません。

メモ WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。
 

注意

wininet.h ヘッダーは、HTTPOpenRequest をエイリアスとして定義し、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択します。 encoding-neutral エイリアスの使用を encoding-neutral ではないコードと混在すると、コンパイル エラーまたはランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「 関数プロトタイプの規則」を参照してください。

要件

   
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー wininet.h
Library Wininet.lib
[DLL] Wininet.dll

関連項目

HTTP セッション

WinINet 関数