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