InternetOpenUrl URLのオープン

Cの宣言:

HINTERNET InternetOpenUrl(
	IN HINTERNET hInternet,
	IN LPCTSTR Url,
	IN LPCTSTR Headers OPTIONAL,
	IN DWORD HeadersSize,
	IN DWORD Flags,
	IN DWORD Context);

説明:

指定されたURLをオープンし、接続を確立し、データ読み込みの準備を行い、ハンドルを返す。

引数の意味は以下の通り。
hInternet InternetOpenで返されたハンドル。
Url オープンするURL。
Headers HTTPサーバに送るヘッダ。NULLを指定可能。
HeadersSize Headersの文字数。-1を指定した場合、自動的に計算される。
Flags オープンの種別を指定するビットマスク値。後述の表を参照。
Context コールバック関数に渡すアプリケーション定義の32bit値。

Flagsに指定可能な値は以下のフラグの組み合わせである。
INTERNET_FLAG_RELOAD ローカルのキャッシュを無視し、常にサーバからデータを取得する。
INTERNET_FLAG_DONT_CACHE ローカル及びゲートウェイにデータをキャッシュしない。
INTERNET_FLAG_RAW_DATA 生のデータを返す(FTPの場合WIN32_FIND_DATA、Gopherの場合GOPHER_FIND_DATA)。このフラグが指定されていない場合、ディレクトリの一覧をHTMLフォーマットで返却する。(->)
INTERNET_FLAG_SECURE SSLやPCTを使用する。(HTTPのみ)
INTERNET_FLAG_EXISTING_CONNECT 可能な限り既存のサーバとの接続を再利用する。

戻り値は、オープンした結果のハンドルである。関数の実行に失敗した場合、NULLが返される。

Cのサンプル:

HTTPで、http://www.geocities.co.jp/SiliconValley-PaloAlto/5920/other.htmlというファイルを読み込み、結果を表示する。
void GetHttpFile()
{
	HINTERNET hInternet;
	HINTERNET hFile;
	char Buf[1000];
	DWORD ReadSize;
	BOOL bResult;

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

	/* URLのオープン */
	hFile = InternetOpenUrl(
		hInternet,
		"http://www.geocities.co.jp/SiliconValley-PaloAlto/5920/other.html",
		NULL,
		0,
		INTERNET_FLAG_RELOAD,
		0);

	/* オープンしたURLからデータを(1000バイトずつ)読み込む */
	for(;;) {
		ReadSize = 1000;

		bResult = InternetReadFile(
			hFile,
			Buf,
			1000,
			&ReadSize);

		/* 全て読み込んだらループを抜ける */
		if(bResult && (ReadSize == 0)) break;

		Buf[ReadSize] = '\0';
		printf("%s", Buf);
	}

	/* 後処理 */
	InternetCloseHandle(hFile);
	InternetCloseHandle(hInternet);
}

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

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