: В цикле вызывается WinHttpReadData для получения содержимого файла порциями, которые затем записываются в локальный файл. Преимущества WinHTTP перед WinINet
HINTERNET hSession = WinHttpOpen(L"UserAgent/1.0", WINHTTP_ACCESS_TYPE_DEFAULT_PROXY, NULL, NULL, 0); HINTERNET hConnect = WinHttpConnect(hSession, L"example.com", INTERNET_DEFAULT_HTTP_PORT, 0); HINTERNET hRequest = WinHttpOpenRequest(hConnect, L"GET", L"/file.zip", NULL, NULL, NULL, 0); if (WinHttpSendRequest(hRequest, NULL, 0, NULL, 0, 0, 0) && WinHttpReceiveResponse(hRequest, NULL)) { DWORD dwSize = 0; do { WinHttpQueryDataAvailable(hRequest, &dwSize); BYTE* pBuffer = new BYTE[dwSize]; DWORD dwDownloaded = 0; WinHttpReadData(hRequest, (LPVOID)pBuffer, dwSize, &dwDownloaded); // Запись pBuffer в файл... delete[] pBuffer; } while (dwSize > 0); } // Закрытие дескрипторов WinHttpCloseHandle Use code with caution. Copied to clipboard Обработка ошибок и таймаутов Winhttp скачать файл
: WinHttpOpenRequest формирует структуру GET-запроса к конкретному ресурсу. HINTERNET hConnect = WinHttpConnect(hSession