HttpSendRequestA 関数 (wininet.h)

指定した要求を HTTP サーバーに送信します。これにより、呼び出し元は通常 HttpSendRequestEx に渡される以外の追加データを送信できます。

構文

BOOL HttpSendRequestA(
  [in] HINTERNET hRequest,
  [in] LPCSTR    lpszHeaders,
  [in] DWORD     dwHeadersLength,
  [in] LPVOID    lpOptional,
  [in] DWORD     dwOptionalLength
);

パラメーター

[in] hRequest

HttpOpenRequest 関数の呼び出しによって返されるハンドル。

[in] lpszHeaders

要求に追加する追加のヘッダーを含む null で終わる文字列へのポインター。 追加するヘッダーがない場合、このパラメーターは NULL にすることができます。

[in] dwHeadersLength

追加ヘッダーのサイズ (TCHAR)。 このパラメーターが -1L で 、lpszHeadersNULL でない場合、関数は lpszHeaders がゼロ終端 (ASCIIZ) であると想定し、長さが計算されます。 詳細については、「解説」を参照してください。

[in] lpOptional

要求ヘッダーの直後に送信される任意のデータを含むバッファーへのポインター。 このパラメーターは、一般に POST および PUT 操作に使用されます。 オプションのデータには、サーバーに投稿されるリソースまたは情報を指定できます。 送信する省略可能なデータがない場合、このパラメーターは NULL にすることができます。

[in] dwOptionalLength

省略可能なデータのサイズ (バイト単位)。 送信する省略可能なデータがない場合、このパラメーターは 0 にすることができます。

戻り値

成功した場合は TRUE 、それ以外の場合 は FALSE を 返します。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

HttpSendRequest は、指定された要求を HTTP サーバーに送信し、クライアントが要求と共に送信する追加のヘッダーを指定できるようにします。

この関数を使用すると、クライアントは要求ヘッダーの直後に HTTP サーバーに送信する省略可能なデータを指定することもできます。 この機能は、通常、PUT や POST などの "書き込み" 操作に使用されます。

要求が送信されると、HTTP サーバーからの状態コードと応答ヘッダーが読み取られます。 これらのヘッダーは内部的に管理され、 HttpQueryInfo 関数を介してクライアント アプリケーションで使用できます。

アプリケーションは、 HttpSendRequest への複数の呼び出しで同じ HTTP 要求ハンドルを使用できますが、アプリケーションは、関数を再度呼び出す前に、前の呼び出しから返されたすべてのデータを読み取る必要があります。

オフライン モードでは、リソースがインターネット キャッシュに見つからない場合、 HttpSendRequestERROR_FILE_NOT_FOUND を返します。

HttpSendRequest には、HttpSendRequestA (ANSI ビルドで使用) と HttpSendRequestW (Unicode ビルドで使用) の 2 つのバージョンがあります。 dwHeadersLength が -1L で lpszHeadersNULL でない場合は、次のことが発生します。HttpSendRequestA が呼び出されると、関数は lpszHeaders が 0 で終わる (ASCIIZ) と見なされ、長さが計算されます。 HttpSendRequestW が呼び出されると、関数は ERROR_INVALID_PARAMETERで失敗します。

メモHttpSendRequestA 関数は、ヘッダーを ANSI 文字ではなく ISO-8859-1 文字として表します。 HttpSendRequestW 関数は、UTF-16LE 文字に変換された ISO-8859-1 文字としてヘッダーを表します。 その結果、追加するヘッダーに ASCII 以外の文字を含めることができる場合は、 HttpSendRequestW 関数を使用しても安全ではありません。 代わりに、アプリケーションで MultiByteToWideChar 関数と WideCharToMultiByte 関数を使用し、 Codepage パラメーターを 28591 に設定して、ANSI 文字と UTF-16LE 文字をマップできます。
 
WinINet API の他のすべての側面と同様に、この関数を DllMain またはグローバル オブジェクトのコンストラクターとデストラクター内から安全に呼び出すことはできません。
メモ WinINet では、サーバーの実装はサポートされていません。 また、サービスから使用しないでください。 サーバーの実装またはサービスの場合は、 Microsoft Windows HTTP サービス (WinHTTP) を使用します。
 

注意

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

要件

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

こちらもご覧ください

HTTP セッション

WinINet 関数