WinINetとWinHTTPを使用してC++からHttpアクセスの実装の仕方

WinINetでHTTPアクセスをする

  1. #include
  2. インターネットオープン
  3. HINTERNET hInternet = InternetOpen(L”MyApp”, INTERNET_OPEN_TYPE_DIRECT, NULL, NULL, 0);
    if (hInternet == NULL) {
    // エラー処理
    return;
    }
  4. InternetOpenUrlを利用する
  5. HINTERNET hConnect = InternetOpenUrl(hInternet, L”http://www.example.com”, NULL, 0, INTERNET_FLAG_RELOAD, 0);
    if (hConnect == NULL) {
    // エラー処理
    InternetCloseHandle(hInternet);
    return;
    }
  6. インターネットファイルを読み込む
  7. char buffer[4096];
    DWORD bytesRead;
    while (InternetReadFile(hConnect, buffer, sizeof(buffer), &bytesRead) && bytesRead > 0) {
    // 読み取ったデータを処理する
    // …
    }
  8. インターネットクローズハンドル
  9. InternetCloseHandle(hConnect);
    hInternetを InternetCloseHandle する。

WinHTTPを使ったHTTPアクセス

  1. #include
  2. WinHttpOpenを開く
  3. HINTERNET hSession = WinHttpOpen(L”MyApp”, WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, WINHTTP_NO_PROXY_NAME, WINHTTP_NO_PROXY_BYPASS, 0);
    if (hSession == NULL) {
    // エラー処理
    return;
    }
  4. WinHttpOpenRequest
  5. WinHttpSendRequest
  6. HINTERNET hConnect = WinHttpOpenRequest(hSession, L”GET”, L”/”, NULL, WINHTTP_NO_REFERER, WINHTTP_DEFAULT_ACCEPT_TYPES, 0);
    if (hConnect == NULL) { // エラー処理
    WinHttpCloseHandle(hSession);
    return;
    }
    if (!WinHttpSendRequest(hConnect, WINHTTP_NO_ADDITIONAL_HEADERS, 0, WINHTTP_NO_REQUEST_DATA, 0, 0, 0)) { // エラー処理
    WinHttpCloseHandle(hConnect);
    WinHttpCloseHandle(hSession);
    return;
    }
  7. WinHttpReadData を呼び出す
  8. char buffer[4096] = {0};
    DWORD bytesRead;
    while (WinHttpReadData(hConnect,buffer, sizeof(buffer), &bytesRead) && bytesRead > 0) {
    // 受け取ったデータの処理
    // …
    }
  9. WinHttpCloseHandle
  10. WinHttpCloseHandle(hConnect);
    WinHttpCloseHandle(hSession);
bannerAds