HINTERNET InternetOpenUrl( IN HINTERNET hInternet, IN LPCTSTR Url, IN LPCTSTR Headers OPTIONAL, IN DWORD HeadersSize, IN DWORD Flags, IN DWORD Context);
引数の意味は以下の通り。
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が返される。
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); }