HttpOpenRequest HTTPリクエストの作成

Cの宣言:

HINTERNET HttpOpenRequest(
	IN HINTERNET hConnect,
	IN LPCTSTR Verb,
	IN LPCTSTR ObjectName,
	IN LPCTSTR Version,
	IN LPCTSTR Referer,
	IN LPCTSTR FAR *AcceptTypes,
	IN DWORD Flags,
	IN DWORD Context);

説明:

hConnectで指定されたインターネットの接続に対して、HTTP要求を作成し、作成したHTTP要求を識別するハンドルを返す。

引数の意味は以下の通り。
hConnect InternetConnectで返されたインターネットへの接続を識別するハンドル。
Verb 要求に使用する動詞。NULLの場合、GETとみなされる。
ObjectName 動詞の対称となるオブジェクトの名前。
Version HTTPのバージョン。NULLの場合、HTTP/1.0が使用される。
Referer ObjectNameで指定されたオブジェクトの位置(URL)。NULLを指定可能。
AcceptTypes メディアのタイプを示すMULTI_SZである文字列の配列。
Flags 要求に関するフラグ。InternetOpenUrlを参照。
Context コールバックに渡されるアプリケーション定義の値。

戻り値は、作成したHTTP要求を識別するハンドルである。関数の実行に失敗した場合、NULLが返される。

Cのサンプル:

HttpSendRequestを利用して、//www.cool.ne.jp/masapico/index.htmlの内容を取得する。
void RequestHttp()
{
	HINTERNET hInternet;
	HINTERNET hHttpSession;
	HINTERNET hHttpRequest;
	char *Buf;
	char BufSizeText[1000];
	DWORD BufSizeTextSize = 1000;
	DWORD BufSize;
	DWORD ReadSize;

	/* WININET初期化 */
	hInternet = InternetOpen(
		"WININET Sample Program",
		INTERNET_OPEN_TYPE_PRECONFIG,
		NULL,
		NULL,
		0);

	/* サーバへ接続 */
	hHttpSession = InternetConnect(
		hInternet,
		"www.cool.ne.jp",
		INTERNET_DEFAULT_HTTP_PORT,
		NULL,
		NULL,
		INTERNET_SERVICE_HTTP,
		0,
		0);

	/* HTTP要求の作成 */
	hHttpRequest = HttpOpenRequest(
		hHttpSession,
		"GET",
		"index.html",
		NULL,
		"http://www.cool.ne.jp/masapico/",
		NULL,
		0,
		0);

	/* 作成したHTTP要求の発行 */
	HttpSendRequest(
		hHttpRequest,
		NULL,
		0,
		NULL,
		0);

	/* 返されたコンテンツの長さを取得 */
	HttpQueryInfo(
		hHttpRequest,
		HTTP_QUERY_CONTENT_LENGTH,
		BufSizeText,
		&BufSizeTextSize, 
		NULL);

	BufSize = atol(BufSizeText);
	Buf = GlobalAlloc(GMEM_FIXED, BufSize);

	/* コンテンツの内容を取得・表示 */
	InternetReadFile(
		hHttpRequest,
		Buf,
		BufSize,
		&ReadSize);

	printf("%s\n", Buf);

	/* 後処理 */
	GlobalFree(Buf);
	InternetCloseHandle(hHttpRequest);
	InternetCloseHandle(hHttpSession);
	InternetCloseHandle(hInternet);
}

(original text:1999/04/21 更新)

本ドキュメントの内容は保証しません。本ドキュメントによって生じた結果について、一切の責任を負いません。